我的理解是,对于MSBuild期间的TFS命令行,使用<Exec \>
MSBuild任务和shell到TF.exe仍然是最简单的,特别是如果您不想创建依赖关系自定义构建任务或扩展包等(请参阅Checkout from TFS with MSBuild)
鉴于此,tf.exe使用的最佳路径是什么,特别是因为不同的开发人员可能将TFS2010或TFS2012与VS2010和VS2012混合在一起,并且还混合了64位工作站。
是否存在从MSBuild调用TF.exe命令的变量/路径标准方法,无论VS或TFS版本如何?
答案 0 :(得分:4)
通过查找ProgramW6432
环境变量,您可以查看系统是否为64位。
只要用户选择了默认安装路径,即使对于VS2012,TF.exe仍然安装在Visual Studio的32位部分中。因此,您唯一需要注意的是用户是否安装了2012或2010。应该可以使用Exists
条件:
<PropertyGroup>
<ProgramFiles32 Condition="$(ProgramW6432) != ''">$(PROGRAMFILES) (x86)</ProgramFiles32>
<ProgramFiles32 Condition="$(ProgramFiles32) == ''">$(PROGRAMFILES)</ProgramFiles32>
<VS10Dir>$(ProgramFiles32)\Microsoft Visual Studio 10.0</VS10Dir>
<VS11Dir>$(ProgramFiles32)\Microsoft Visual Studio 11.0</VS11Dir>
<TF Condition="Exists('$(VS10Dir)')">"$(VS10Dir)\Common7\IDE\TF.exe"</TF>
<TF Condition="Exists('$(VS11Dir)')">"$(VS11Dir)\Common7\IDE\TF.exe"</TF>
</PropertyGroup>
...
<Exec Command="$(TF) checkout ..."></Exec>
答案 1 :(得分:3)
tbergstedt的解决方案可能更加强大,也可以适应其他问题。我确实发现有一个快捷方式,因为TF.exe可执行文件也在开发者环境路径 $(DevEnvDir)中。见下文:
<PropertyGroup>
<TfCommand>"$(DevEnvDir)\tf.exe"</TfCommand>
</PropertyGroup>