Msbuild VSTS如何使用多项目解决方案创建包文件(zip)

Msbuild VSTS如何使用多项目解决方案创建包文件(zip),msbuild,azure-devops,Msbuild,Azure Devops,我们有一个包含两个web项目的解决方案: 解决方案-> -项目1 -项目2 我们在VST中有一个CI,用于构建和创建包(工件zip文件) 当我们在解决方案中添加第二个项目时,工件只有一个项目。检查VSTS中的日志,我们看到了以下几行: 2018-08-21T13:27:55.6971077Z清洁网站包装核心: 2018-08-21T13:27:55.6971269Z删除文件“D:\a\1\a\20180821.17.zip”。 2018-08-21T13:27:55.6997562Z清洁网站包

我们有一个包含两个web项目的解决方案:

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

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

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


2018-08-21T13:27:55.6971077Z清洁网站包装核心:
2018-08-21T13:27:55.6971269Z删除文件“D:\a\1\a\20180821.17.zip”。
2018-08-21T13:27:55.6997562Z清洁网站包装:
2018-08-21T13:27:55.6997903Z删除文件“D:\a\1\a\20180821.17.SourceManifest.xml”。
2018-08-21T13:27:55.7002478Z删除文件“D:\a\1\a\20180821.17.deploy.cmd”。
2018-08-21T13:27:55.7006495Z删除文件“D:\a\1\a\20180821.17.deploy readme.txt”。
2018-08-21T13:27:55.7009652Z删除文件“D:\a\1\a\20180821.17.SetParameters.xml”。
2018-08-21T13:27:55.7022918Z ValidateGlobalPackage设置:
2018-08-21T13:27:55.7023199Z$(PackageAsSingleFile)是真的
2018-08-21T13:27:55.7023978Z$(PackageFileName)是D:\a\1\a\20180821.17.zip。验证。。。
2018-08-21T13:27:55.7028185Z从中间组件收集文件:

似乎VSTS在完成第一个项目时,会删除zip文件并启动下一个项目

我找到了一个定义目标项目名称(定义-t)的变通方法:


/p:DeployOnBuild=true/p:WebPublishMethod=Package/p:packageassingfile=true/p:SkipInvalidConfigurations=true/p:DesktopBuildPackageLocation=“$(build.artifactstagindirectory)\$(build.BuildNumber.zip)/p:deployiisappath=“网站”/p:ProductsToRelease=“Frontend”/t:Frontend\Frontend

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


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

对于我来说,在我的.sln中,我有4个csproj,应该添加到webapp.zip中

在其中两个项目中,这导致了CleanWebsitesPackageCore被调用,导致了与您相同的问题

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



如果使用两个MSBuild任务而不是VS Build任务来分别构建这两个项目,会怎么样?并为两个MSBuild任务指定不同的
/p:DesktopBuildPackageLocation
,例如一个用于
/p:DesktopBuildPackageLocation=“$(build.artifactstagindirectory)\app1
,另一个用于
/p:DesktopBuildPackageLocation=“$(build.artifactstagindirectory)\app2
,我们使用的变通方法是分别构建这两个项目,但我们构建了好几次,例如:集成测试、项目1、项目2。我们在项目1和项目2之间有一些共享代码。在一个步骤中构建之前(在构建步骤之后运行测试并创建工件)。