【问题标题】:TFS Path for commandline tools to use in MSBuild在 MSBuild 中使用的命令行工具的 TFS 路径
【发布时间】:2012-10-08 19:21:03
【问题描述】:

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

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

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

【问题讨论】:

    标签: tfs msbuild


    【解决方案1】:

    您可以通过查找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>
    

    【讨论】:

    • 谢谢...这将是有用的!后来我发现有一个更短的解决方案(我会添加它作为另一个解决方案)。
    【解决方案2】:

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

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

    【讨论】:

    • 不错。比我的整洁多了!在我的环境变量中没有看到这一点,即使在 VS 命令提示符下也是如此。也许是 VS2012 的新手(我两者都有,但使用定制的 powershell 设置)?
    • 注意:如果没有正确设置 DevEnvDir,请参阅 here
    猜你喜欢
    • 2022-11-08
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 2015-01-25
    相关资源
    最近更新 更多