MSBuild会忽略GatherAllFilesToPublish?

时间:2018-11-22 02:38:11

标签: msbuild

因此,我为我的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对此一无所知?看起来好像是这样。

1 个答案:

答案 0 :(得分:0)

使用msbuild和Jenkins遇到同样的问题。 要使用msbuild执行目标 GatherAllFilesToPublish ,我必须在msbuild命令行中添加目标 / t:GatherAllFilesToPublish

您应该有这样的东西:

  

/ p:DeployOnBuild = true /p:PublishProfile=fullPathToMyPubXML.pubxml   / t:GatherAllFilesToPublish