TF Build Agent的.csproj / msbuild PropertyGroup配置

时间:2018-07-17 17:28:43

标签: visual-studio tfs msbuild msbuild-propertygroup

如何使项目构建在1)(在Visual Studio中进行本地编译)和2)由TF Build Agent上的TFS Build Server触发时表现不同?

我尝试了(都没有成功)

<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。

编辑/更新:

我以自己的方式发现了错误,因为我编辑了AnyCPU PropertyGoup并构建了x86。

1 个答案:

答案 0 :(得分:0)

实际上,所有这些工作,包括丹尼尔·曼的建议。我在错误的属性组上使用了它。

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

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上,以下条件应该为true(在Visual Studio中为false):

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