【问题标题】:Building Project in VSTS doesn't build all projects in solution在 VSTS 中构建项目不会在解决方案中构建所有项目
【发布时间】:2016-06-28 23:01:51
【问题描述】:

我遇到了一个奇怪的问题,当我使用“Visual Studio Build”创建构建并提供 *.sln 文件时,它会假装构建所有项目(我在日志中看到了这一点)但是在发布工件时解决方案中只有少数项目(主要是测试项目和一些杂项项目,但没有主要项目) 我的依赖项排序正常,因为这个构建在 VS2015 中很好(我目前使用 WebDeploy) 有人见过这种行为吗?

【问题讨论】:

    标签: azure-devops azure-pipelines-build-task azure-pipelines


    【解决方案1】:

    由于您提到“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)\\"
    

    然后你会在 artifacts 中得到一个部署包,你可以通过 web deploy 来部署它。

    【讨论】:

    • 嗨,Eddie,我真的不想再使用 WebDeploy 了,希望它能够像在 VS 中构建时一样构建
    • @metase 所以你只想要项目的“dll”输出文件?您正在构建网络应用项目吗?
    • 是的,它几乎可以为 IIS 构建可部署的解决方案。是的,这是一个网络应用项目
    • @metase 您想使用哪种方法部署到 IIS?
    • @metase 然后只需添加“/p:outdir=$(build.artifactstagingdirectory)”参数。
    【解决方案2】:

    我也遇到过这个问题(或类似问题?) 主项目的工件没有发布,只有测试项目。

    查看日志文件时,我注意到两件事。

    1. 仅复制测试项目中的文件

    2. 任务“Copy Files to:$(build.artifactstagingdirectory)”正在使用通配符“\bin\release**”查找内容 此路径在构建步骤“Copy Files”/“Content”中设置,默认为“\bin\$(BuildConfiguration)**”,转换为您在此下的“Variables”/“BuildConfiguration”中的设置构建定义。

    然后我查看了 Visual Studio 中的项目设置,由于某种原因,主项目将“构建/输出/输出路径”中的设置设置为“bin\”;将其更改为“bin\Release”用于发布和“bin\Debug”用于调试解决了我的问题。

    解决方案?

    一个。将 VS 项目设置“构建/输出/输出路径”设置为“bin\Release”

    b. (或将 VSTS 构建步骤“复制文件”/“内容”更改为“\bin”以捕获 bin 中的所有内容)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-07
      • 1970-01-01
      • 2021-05-25
      • 1970-01-01
      • 1970-01-01
      • 2016-01-06
      • 1970-01-01
      相关资源
      最近更新 更多