我遇到了一个奇怪的问题,当我使用“Visual Studio Build”创建构建并提供 *.sln 文件时,它假装构建所有项目(我在日志中看到了这一点)但是在发布工件时只有解决方案中的一些项目(主要是测试项目和一些杂项项目,但没有主要项目)我的依赖项排序正常,因为在 VS2015 中构建良好(我目前使用 WebDeploy) 有人见过这种行为吗?
2 回答
既然您提到了“WebDeploy”,我怀疑您正在与解决方案中的其他一些项目一起构建一个 Web 应用程序项目。您看到的行为通常是由默认的“Visual Studio”构建定义模板引起的。使用此模板的默认设置,“复制文件”任务将“**\bin\$(BuildConfiguration)**”文件夹中的文件复制到“$(build.artifactstagingdirectory)”文件夹,然后发布“$ (build.artifactstagingdirectory)”文件夹。但这不适用于 Web App Project。
要解决此问题,请在“Visual Studio Build”任务的“MSBuild Arguments”部分添加以下参数:
/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"
然后,您将在工件中获得一个部署包,您可以通过 Web 部署进行部署。
我也有这个问题(或类似问题?)主项目的工件没有发布,只有测试项目。
在查看日志文件时,我注意到两件事。
仅复制了测试项目中的文件
任务“Copy Files to:$(build.artifactstagingdirectory)”正在使用通配符“ \bin\release**”查找内容,此路径在构建步骤“Copy Files”/“Content”中设置,为“ \bin \$(BuildConfiguration)**" 默认情况下,转换为您在此构建定义下的“变量”/“BuildConfiguration”中的设置。
然后我查看了 Visual Studio 中的项目设置,由于某种原因,主项目将“构建/输出/输出路径”中的设置设置为“bin\”;将其更改为“bin\Release”用于发布和“bin\Debug”用于调试解决了我的问题。
解决方案?
一个。将 VS 项目设置“构建/输出/输出路径”设置为“bin\Release”
湾。(或将 VSTS 构建步骤“复制文件”/“内容”更改为“ \bin ”以捕获 bin 中的所有内容)