2014-09-01 67 views
2

我希望從我在TFS上運行的MSBuild腳本調用GetBuildProperties任務。 但是,此腳本可以在TFS 2010或TFS 2013上運行。 有沒有辦法檢測啓動MSBuild腳本的TFS版本?目前,我正在解決該問題,像這樣:從MSBuild中檢測TFS版本/安裝文件夾

<PropertyGroup> 
    <CurrentProgramFiles>$(ProgramW6432)</CurrentProgramFiles> 
    <CurrentProgramFiles Condition="$(CurrentProgramFiles) == ''">$(ProgramFiles)</CurrentProgramFiles> 
    </PropertyGroup> 

    <PropertyGroup Condition="$(TeamFoundationServerUrl)!='' and Exists('$(CurrentProgramFiles)\Microsoft Team Foundation Server 2010')"> 
    <TeamBuildRefPath>$(CurrentProgramFiles)\Microsoft Team Foundation Server 2010\Tools</TeamBuildRefPath> 
    </PropertyGroup> 

    <PropertyGroup Condition="$(TeamFoundationServerUrl)!='' and Exists('$(CurrentProgramFiles)\Microsoft Team Foundation Server 12.0')"> 
    <TeamBuildRefPath>$(CurrentProgramFiles)\Microsoft Team="" Foundation Server 12.0\Tools</TeamBuildRefPath> 
    </PropertyGroup> 

    <UsingTask 
    TaskName="Microsoft.TeamFoundation.Build.Tasks.GetBuildProperties" 
    AssemblyFile="$(TeamBuildRefPath)\Microsoft.TeamFoundation.Build.ProcessComponents.dll" 
    Condition="$(TeamFoundationServerUrl)!=''" /> 
+0

你能澄清,如果你需要的TFS版本或生成代理的版本? – 2014-09-02 06:09:29

+1

代理版本:) – Kram 2014-09-02 09:45:56

回答

2

與TFS從2013年開始,你有一些有趣的變量,以前沒有的TF_BUILD environment variables。所以你可以使用TF_BUILD知道你是否使用2013,就像這樣。

<PropertyGroup> 
     <IsTFS2013orHigher Condition="$(TF_BUILD)!=''>Yes</IsTFS2013orHigher> 
    </PropertyGroup> 

對於安裝路徑我會偷看註冊表

<PropertyGroup> 
    <TFS2013InstallPath>$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\TeamFoundationServer\[email protected])</TFS2013InstallPath> 
    <TFS2012InstallPath>$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\TeamFoundationServer\[email protected])</TFS2012InstallPath> 
    <TFSInstallPath Condition="'$(TFS2013InstallPath)'!=''">$(TFS2013InstallPath)</TFSInstallPath> 
    <TFSInstallPath Condition="'$(TFS2013InstallPath)'=='' and '$(TFS2012InstallPath)'!=''">$(TFS2012InstallPath)</TFSInstallPath> 
    </PropertyGroup> 
+0

然而,這隻會告訴你TF Build的哪個版本存在。您可以將TF Build 2010連接到TFS 2013,以便您的結果可能會有所不同。 – 2014-09-02 05:48:59

+0

正確,但Q是關於檢測本地安裝,即TFS Build Agent版本,以使用特定的MSBuild任務。 – 2014-09-02 05:57:48

+0

問題沒有指定生成代理版本,只有TFS。我寧願問問題的人澄清而不是做出假設。 – 2014-09-02 06:00:52