如何使项目构建在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。
答案 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'