TFS在MSBuild中使用的命令行工具的路径

时间:2012-10-08 06:25:25

标签: tfs msbuild

我的理解是,对于MSBuild期间的TFS命令行,使用<Exec \> MSBuild任务和shell到TF.exe仍然是最简单的,特别是如果您不想创建依赖关系自定义构建任务或扩展包等(请参阅Checkout from TFS with MSBuild

鉴于此,tf.exe使用的最佳路径是什么,特别是因为不同的开发人员可能将TFS2010或TFS2012与VS2010和VS2012混合在一起,并且还混合了64位工作站。

是否存在从MSBuild调用TF.exe命令的变量/路径标准方法,无论VS或TFS版本如何?

2 个答案:

答案 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)')">&quot;$(VS10Dir)\Common7\IDE\TF.exe&quot;</TF>
  <TF Condition="Exists('$(VS11Dir)')">&quot;$(VS11Dir)\Common7\IDE\TF.exe&quot;</TF>
</PropertyGroup>
...
<Exec Command="$(TF) checkout ..."></Exec>

答案 1 :(得分:3)

tbergstedt的解决方案可能更加强大,也可以适应其他问题。我确实发现有一个快捷方式,因为TF.exe可执行文件也在开发者环境路径 $(DevEnvDir)中。见下文:

  <PropertyGroup>
    <TfCommand>&quot;$(DevEnvDir)\tf.exe&quot;</TfCommand>
  </PropertyGroup>