2012-10-08 37 views
0

这是我的理解,它仍然是最简单的使用MSBuild任务和Shell到TF.exe为了在MSBuild期间的TFS命令行,尤其是如果你不想要创建自定义生成任务或扩展包等的依赖(见Checkout from TFS with MSBuild在MSBuild中使用的命令行工具的TFS路径

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

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

回答

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> 
+0

谢谢...这将是有益的!自从发现有一个更短的解决方案后(我将它添加为另一个解决方案),我做了。 – Jaans

3

tbergstedt有一个解决方案可能更强大,也可以适用于其他的问题。我发现有一个快捷方式,因为TF.exe可执行文件也位于Developer Environment路径$(DevEnvDir)。见下:

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

不错。比我的整洁得多!没有看到我的环境变量,即使在VS命令提示符中。也许新VS2012(我有两个,但使用定制的PowerShell设置)? –

+0

注意:请参阅[此处](https://social.msdn.microsoft.com/Forums/zh-CN/540c2273-2ad3-4a48-93ba-5fa6bda8c941/team-build-does-not-understand-devenvdir) DevEnvDir设置不正确。 – Adversus