0

据我了解,在<Exec \>MSBuild 期间使用 MSBuild 任务和 shell 到 TF.exe 以 TFS 命令行仍然是最简单的,特别是如果您不想创建对自定义构建任务或扩展包等的依赖项。 (请参阅使用 MSBuild 从 TFS 签出

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

无论VS或TFS版本如何,是否有一种变量/路径标准方法可以从MSBuild调用TF.exe命令?

4

2 回答 2

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>
于 2012-10-08T11:14:30.577 回答
3

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

  <PropertyGroup>
    <TfCommand>&quot;$(DevEnvDir)\tf.exe&quot;</TfCommand>
  </PropertyGroup>
于 2012-10-08T11:21:03.773 回答