检测 TFS 构建与 Visual Studio 构建

Detect TFS Build vs. Visual Studio build

是否可以在不创建单独的解决方案配置的情况下检测当前构建是否从 Visual Studio 执行,而不是使用 TFS 自动构建?我想知道如果 TFS 2013 上的构建是 运行,我是否可以排除某些 Post 构建事件,但如果可能的话,我想避免整个单独的配置。

这是可能的,我终于找到了方法:

  1. 卸载有问题的项目,它定义了 PostBuildEvent。
  2. 编辑 .csproj 文件。
  3. 找到 PostBuildEvent XML 元素,并添加如下所示的 Condition 属性:

    <PostBuildEvent Condition="'$(BuildingInsideVisualStudio)' == 'true'">

此时 PostBuildEvent 将仅在使用 Visual Studio 构建时执行。

This answer 和该问题的其他答案很有帮助。

这个特殊的 属性 在 this MSDN 页面上也有简要提及。

您不需要编辑 CSProj 文件:只需在 Visual Studio Post-Build events

中使用 CMD.EXE 语法

你可以测试运行是否在Visual Studio

里面

IF "$(BuildingInsideVisualStudio)"=="true" ( … )

或在 TFS Build 中(2013 或更高版本)

IF "$(TF_BUILD)"=="True" ( … )

见讨论a TFS 2010 Build Automation and post-build event and Team Foundation Build environment variables.