2014-10-21 44 views
2

使用下面的自定義TFS活動我試圖從WellKnownEnvironmentVariables.SourcesDirectory獲取源目錄。但是,它總是返回null。我如何從自定義活動的C#代碼中獲取WellKnownEnvironmentVariables.SourcesDirectory的值(我不想傳入該值)?從自定義TFS活動獲取WellKnownEnvironmentVariables.SourcesDirectory的值

public class MyActivity : CodeActivity 
{ 
    protected override void Execute(CodeActivityContext context) 
    { 
     var eve = new EnvironmentVariableExtension(); 
     var sourcesDirectory = eve.GetEnvironmentVariable<string>(context, WellKnownEnvironmentVariables.SourcesDirectory); 
    } 
} 

我也試過這個返回空值,以及...

public class MyActivity : CodeActivity 
{ 
    protected override void Execute(CodeActivityContext context) 
    { 
     var sourcesDirectory = System.Environment.GetEnvironmentVariable("TF_BUILD_SOURCESDIRECTORY"); 
    } 
} 
+0

什麼是EnvironmentV ariableExtension? – 2014-10-21 22:54:09

+0

我認爲這是TFS2013的新功能。 http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.activities.extensions.environmentvariableextension.aspx – 2014-10-21 23:07:03

+0

得到了同樣的問題。如果我沒有弄錯,「dir env:」powershell命令應該包含TFS2013添加的所有這些新的TF_BUILD_ *變量,在我的情況下,這些都是缺失的。我會嘗試手動添加它們,看看會發生什麼。也許這只是由安裝程序引起的配置問題。 – r41n 2015-01-20 13:17:28

回答

1

如果你想從你的代碼獲取環境變量的值,只需使用這樣的事情:

System.Environment.GetEnvironmentVariable("TF_BUILD_SOURCESDIRECTORY") 

TFS Build相關環境變量的完整列表可以在這裏找到:http://msdn.microsoft.com/en-ca/library/hh850448.aspx#program_or_script

+0

您確定您的構建服務器正在運行TFS 2013,並且您正在使用新的構建模板:TfvcTemplate.12.xaml? – 2014-10-21 23:10:53

+0

更正,2013,以及已修改爲運行我們的自定義TFS活動的默認構建模板。 – 2014-10-21 23:19:11

+0

您是使用「默認模板」,它是不使用環境變量的舊2012模板,或是使用環境變量而不是工作流程變量的2013新模板「TfvcTemplate.12.xaml」。 – 2014-10-21 23:24:25