因此,我为我的Web应用程序创建了一个发布个人资料。我使用VS 2017 Enterprise中的GUI进行了此操作。然后,我找到了一个示例,说明如何更改pubxml以使其压缩所有输出文件。最终,我最终得到了这个:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<PublishProvider>FileSystem</PublishProvider>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<PrecompileBeforePublish>True</PrecompileBeforePublish>
<EnableUpdateable>True</EnableUpdateable>
<DebugSymbols>False</DebugSymbols>
<WDPMergeOption>DonotMerge</WDPMergeOption>
<ExcludeApp_Data>False</ExcludeApp_Data>
<publishUrl>bin\Release\Publish</publishUrl>
<DeleteExistingFiles>True</DeleteExistingFiles>
<Configuration>Release</Configuration>
</PropertyGroup>
<Target Name="ZipPublishOutput" AfterTargets="GatherAllFilesToPublish">
<Exec Command='powershell -nologo -noprofile -command "compress-archive -force -path $(WPPAllFilesInSingleFolder)\* -destinationpath $(publishUrl).zip"' />
</Target>
</Project>
如果我通过Visual Studio进行发布,则可以很好地工作。但是,我一直在尝试我能想到的一切,以使其在MSBuild中正常运行,而没有运气。
以下是我认为应该起作用的示例:
“ C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ 15.0 \ Bin \ MSBuild.exe” WebApp.csproj / nologo / p:Configuration = Release / p:DeployOnBuild = true / p :PublishProfile =发布发布
供参考,以下是MSBuild的版本:
用于.NET Framework的Microsoft(R)构建引擎版本15.9.20 + g88f5fadfbe
我知道MSBuild正在找到配置文件pubxml,因为我可以更改设置(例如publishUrl),并且这些更改将在下次运行MSBuild时应用。 ZipPublishOutput目标似乎无效。甚至以诊断性的详细程度运行MSBuild都表明GatherAllFilesToPublish从未运行,这意味着我的目标无法运行。
我发现了许多不同的建议,似乎无济于事。我发现很多解决方案似乎是与MSBuild一起找到的,但找不到pubxml,但这不是这种情况。
那么,GatherAllFilesToPublish是否特定于Visual Studio,因此MSBuild对此一无所知?看起来好像是这样。
答案 0 :(得分:0)
使用msbuild和Jenkins遇到同样的问题。 要使用msbuild执行目标 GatherAllFilesToPublish ,我必须在msbuild命令行中添加目标 / t:GatherAllFilesToPublish 。
您应该有这样的东西:
/ p:DeployOnBuild = true /p:PublishProfile=fullPathToMyPubXML.pubxml / t:GatherAllFilesToPublish