【问题标题】:How to skip one project from multiple projects in one solution in vsts build definition, VSTS如何在 vsts 构建定义、VSTS 中的一个解决方案中从多个项目中跳过一个项目
【发布时间】:2018-01-04 13:28:50
【问题描述】:

我有一个 Web 应用程序,它由一个解决方案下的三个项目组成。但是,我希望只允许构建定义中的两个项目通过 VSTS 中的参数构建。是否有可能,如果可能的话,我想如何通过 Arguments 中的命令跳过一个项目?

【问题讨论】:

标签: msbuild azure-devops


【解决方案1】:

VSTS 中没有这样的设置可以从一个解决方案的多个项目中跳过一个项目。

如果您想跳过 VSTS 的项目,您应该相应地更改 .sln(如 raterus 所述)。详细步骤如下:

在 VS 中打开解决方案 -> 构建 -> 配置管理器 -> 选择要跳过的构建配置和构建平台以构建项目 -> 取消选择要跳过的项目构建 -> 关闭。

然后保存 .sln 文件的更改,并将更改提交并推送(签入)到 VSTS 存储库。

现在您可以在 VSTS 中构建,它会跳过您在 VS 中指定的项目。

你也可以文档How to: Exclude Projects from a Build


如果您不想删除.sln中的项目信息,解决方法是在VS构建任务之前更改.sln,并在任务之后恢复.sln

如果你使用 git 作为 VCS,你可以使用以下方式跳过一个项目来构建:

  1. 在 VS 构建任务之前,使用以下脚本添加一个 PowerShell 任务:

    git checkout $(BUILD.SOURCEBRANCHNAME)
    (get-content "$(Build.SourcesDirectory)\relative\path\to\solution") -notmatch "{project_ID}.$(BuildConfiguration)" | out-file "$(Build.SourcesDirectory)\relative\path\to\solution"
    

    如:

    git checkout $(BUILD.SOURCEBRANCHNAME)
    (get-content "$(Build.SourcesDirectory)\ConsoleAppCore\ConsoleAppCore.sln") -notmatch "{ECF93D95-5096-497E-B4B8-83416DABB516}.$(BuildConfiguration)" | out-file "$(Build.SourcesDirectory)\ConsoleAppCore\ConsoleAppCore.sln"
    
  2. 在 VS Build 任务之后,添加另一个 PowerShell 任务以使用脚本恢复 .sln

    git reset --hard head
    

然后,在VS Build任务中,你会发现项目是skip to build。

【讨论】:

  • 感谢您的回复,正如您所说,删除/取消选中我要删除的相关项目。但我需要的是,删除VSTS中关于构建定义的相关项目(该项目必须签入到VSTS)
  • @Mani 我在答案末尾添加了一个解决方法以跳过要构建的项目,您可以尝试一下。
  • 现在,我没有将 Git 用于构建目的,而不是使用 VSTS。那么您能否更新您与 VSTS 相关的答案
  • 您可以使用类似的方法,只需通过tf undo * /recursive命令更改撤消TFVC repo更改的方式即可。
  • @Mani 你试过了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-20
  • 1970-01-01
  • 2019-01-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多