.csproj/msbuild TF Build Agent 的 PropertyGroup 配置

.csproj/msbuild PropertyGroup configuration for TF Build Agent

如何使项目构建在 1)(本地)内部编译 Visual Studio 和 2) 由 TF 构建代理上的 TFS 构建服务器触发时表现不同?

我试过了(都没有成功)

<PropertyGroup Condition="'$(TF_BUILD)' == 'true' AND '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">

<PropertyGroup Condition="'$(BuildingInsideVisualStudio)' != 'true' AND '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">

我(在这两种情况下)创建了 2 个这样的 属性 组,其中 == 和 != 在第一个条件(应该导致不同行为的那个)和 PropertyGroup 中的不同内容(哪个才是我真正的目标)。

我正在使用 VS 2017 和 TFS 2017。

edit/update:

我发现了我的错误,我编辑了 AnyCPU PropertyGoup 并构建了 x86。

实际上,所有这些都有效,包括 Daniel Mann 的建议。我在错误的 属性 组中使用了它。

由于我发现此信息很难找到,希望此摘要对以后的人有所帮助。

TF 和本地 (VS) 构建上的不同 属性 值可以这样写

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
...
  <Optimize Condition="'$(BUILD_SOURCESDIRECTORY)' != ''">true</Optimize>
  <Optimize Condition="'$(TF_BUILD)' != 'true'">false</Optimize>
..redundant..
  <Optimize Condition="'$(BuildingInsideVisualStudio)' == 'false'">true</Optimize>
...
</PropertyGroup>

所以在 TFS Build 上,以下条件应该为真(在 Visual Studio 中为假):

$(BUILD_SOURCESDIRECTORY) != ''
$(TF_BUILD) == 'true'
$(BuildingInsideVisualStudio)' != 'true'