【问题标题】:VSTS How to create package file (zip) with multi project solutionVSTS 如何使用多项目解决方案创建包文件(zip)
【发布时间】:2019-01-27 18:30:35
【问题描述】:

我们有两个网络项目的解决方案:

解决方案 ->
- 项目 1
- 项目 2

我们在 VSTS 中有一个 CI,用于构建和创建包(工件 zip 文件)。

当我们在解决方案中添加第二个项目时,工件只有一个项目。检查 VSTS 中的日志,我们看到了以下几行:

2018-08-21T13:27:55.6971077Z CleanWebsitesPackageCore: 2018-08-21T13:27:55.6971269Z Deleting file "D:\a\1\a\20180821.17.zip". 2018-08-21T13:27:55.6997562Z CleanWebsitesPackage: 2018-08-21T13:27:55.6997903Z Deleting file "D:\a\1\a\20180821.17.SourceManifest.xml". 2018-08-21T13:27:55.7002478Z Deleting file "D:\a\1\a\20180821.17.deploy.cmd". 2018-08-21T13:27:55.7006495Z Deleting file "D:\a\1\a\20180821.17.deploy-readme.txt". 2018-08-21T13:27:55.7009652Z Deleting file "D:\a\1\a\20180821.17.SetParameters.xml". 2018-08-21T13:27:55.7022918Z ValidateGlobalPackageSetting: 2018-08-21T13:27:55.7023199Z $(PackageAsSingleFile) is true 2018-08-21T13:27:55.7023978Z $(PackageFileName) is D:\a\1\a\20180821.17.zip. Validating... 2018-08-21T13:27:55.7028185Z CollectFilesFromIntermediateAssembly:

似乎 VSTS 在完成第一个项目后,删除 zip 文件并开始下一个。

我找到了定义目标项目名称(定义-t)的解决方法:

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactstagingdirectory)\$(Build.BuildNumber).zip" /p:DeployIisAppPath="Web Site" /p:ProductsToRelease="Frontend" /t:Frontend\Frontend

如果我在我的计算机上执行 msbuild,zip 文件中有两个项目,但在 VSTS 中不起作用。

是否有任何配置可以避免删除目标(CleanWebsitesPackageCore)?

【问题讨论】:

  • 如果您使用两个 MSBuild 任务而不是一个 VS Build 任务来分别构建两个项目怎么办?并为这两个MSBuild任务指定不同的/p:DesktopBuildPackageLocation,比如一个为/p:DesktopBuildPackageLocation="$(build.artifactstagingdirectory)\app1,另一个为/p:DesktopBuildPackageLocation="$(build.artifactstagingdirectory)\app2
  • 实际上,我们使用的解决方法是分别构建两个项目,但我们正在构建多次,例如:集成测试,项目1,项目2。我们在项目1和项目之间有一些共享代码项目2.在我们一步构建之前(运行测试并在构建步骤之后创建工件)。

标签: msbuild azure-devops


【解决方案1】:

在我的 .sln 中,我有 4 个 csproj,应该添加到 webapp.zip 中。

在其中两个项目中,这导致调用 CleanWebsitesPackageCore 导致您遇到相同的问题。

我通过将以下空目标添加到 2 个有问题的 csproj 文件的底部来“修复”,这会覆盖正常的清理功能:

 <Target Name="CleanWebsitesPackageCore"/>
  <Target Name="CleanWebsitesPackage"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 2011-11-09
    • 1970-01-01
    相关资源
    最近更新 更多