我可以使用Sdk =“ Microsoft.Net.Sdk”成功构建具有新csproj格式的WPF应用程序。
但是,发布上述应用有点困难。 IDE绝对不提供该选项。但是令我有些困惑的是,当您直接调用msbuild时,发布目标似乎不可用。
这些是我设置的一些顶级属性:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net461</TargetFramework>
<LanguageTargets>$(MSBuildExtensionsPath)\$(VisualStudioVersion)\Bin\Microsoft.CSharp.targets</LanguageTargets>
<OutputType>WinExe</OutputType>
<PlatformTarget>x86</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
<!--<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>-->
</PropertyGroup></Project>
我还设置了与ClickOnce相关联的典型对象,例如PublishUrl等。我可以如何使用上述LanguageTarget为控制台,Web之外的其他其他C#构建任务启用“ CoreBuild”的方式来获取/公开发布目标。和普通库。
进一步的想法:
因此,事实证明,在进一步检查中,实际上存在一个发布目标。但是,它将文件夹/ xcopy部署到名为Publish的子文件夹中,而不是创建app.publish文件夹并执行ClickOnce事情。
如何解决这个问题?
您可以使用Mage.exe(命令行)或MageUI.exe(gui)工具手动发布ClickOnce。它不是很方便,但是如果您一切正确,它似乎确实可以工作。我将使用MageUI.exe
概述对我有用的内容。
从以下位置为所用的.NET版本选择实用程序的正确版本:
C:\ Program Files(x86)\ Microsoft SDKs \ Windows \
首先将您的应用程序文件发布到一个文件夹。通常,这类似于:
\\ server \ share \ MyApplication \ Application Files \ MyApplication_1_0_0_25 \
注意:Application Files
中的空格存在问题,该空格将转换为%20
,但我认为UNC路径不支持该值。我必须删除空间并将文件夹重命名为ApplicationFiles
。 (不过,这可能会破坏以前发布的版本。)
然后使用MageUI.exe
创建新的应用程序清单:
MyApplication.exe.manifest
到应用程序文件夹。 (您可以在保存清单时对清单进行签名。)现在创建一个新的部署清单:
\\server\share\MyApplication\MyApplication.application
; (您可以在保存时签名。)[很多事情可能出错,并且程序可能有很多不同的方式,但这是对我有用的步骤。
[ 。)