Visual Studio Online构建步骤将忽略PackageLocation

时间:2017-01-20 05:27:44

标签: msbuild msdeploy azure-pipelines

我有一个似乎行为不端的Visual Studio Online构建定义,但我不确定我是否只是错误配置了某些内容。

有一个构建步骤,配置如下:

输入: Visual Studio Build

解决方案: ** \ mysolutionfile.sln

MSBuild参数: /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.stagingDirectory)"

构建成功运行,构建日志显示msbuild命令执行如下:

"C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe" "C:\a\1\s\Code\mysolutionfile.sln" /nologo /nr:false /dl:CentralLogger,(more removed for brevity) /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="C:\a\1\a" /p:platform="any cpu" /p:configuration="release" /p:VisualStudioVersion="14.0" /p:_MSDeployUserAgent="VSTS_6efdabeb-1c75-43a7-96b2-f40e19a68a35_build_14_122"

如您所见,包位置已正确设置:/p:PackageLocation="C:\a\1\a"

但是,稍后在构建日志中,程序包步骤会显示此日志条目:

2017-01-20T05:07:30.9771422Z Executing command ["C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" -source:manifest='C:\Users\buildguest\AppData\Local\Temp\PublishTemp\obj\mysolution55\SourceManifest.xml' -dest:package='C:\a\1\s\Code\mysolutionfile\bin\Release\MSDeployPackage\mysolutionfile.zip' -verb:sync -replace:match='C:\\Users\\buildguest\\AppData\\Local\\Temp\\PublishTemp\\mysolutionfile55\\',replace='website\' -retryAttempts:20 -disablerule:BackupRule]

正如您所看到的,在这种情况下,包被发送到-dest:package='C:\a\1\s\Code\mysolutionfile\bin\Release\MSDeployPackage\mysolutionfile.zip' - 这确实是zip文件最终的位置。

据我所知,这看起来不错。我想将打包的应用程序二进制文件和文件最终放在暂存目录中,但是msbuild会覆盖我并将它们放入源checkout文件夹。

如果它是相关的,该解决方案包含两个项目:一个针对完整.NET Framework的ASP.NET Core Web应用程序;和一个便携式类库。

我在构建配置中做错了吗?

1 个答案:

答案 0 :(得分:1)

我在TFS环境中重现了您的问题,我得到了相同的结果。 " C:\ a \ 1 \ s"下的包裹文件夹不是" C:\ a \ 1 \ a'。

作为解决方法,您可以添加复制文件步骤,将包从源文件夹复制到$(build.stagingDirectory)路径。