2017-04-03 48 views
0

我想知道如何獲取XAML構建定義所使用的解決方案的名稱。TFS 2017 - 在C#中獲取解決方案的名稱

例如,在我有這樣的路徑選擇我想申請這個生成定義該解決方案我生成Defnition的配置:$ /測試/解決方案名稱/ SolutionName.sln

我怎樣才能得到「解決方案名稱」爲我的活動代碼,使用C#代碼。

編輯:我的變量,我可以把什麼作爲默認收益? enter image description here

代碼:

public InArgument<string> BuildSettings { get; set; } 
.... 
string nameSolutionAuto = System.IO.Path.GetFileNameWithoutExtension(this.BuildSettings.ProjectsToBuild[0]); 
+0

我會盡快給你一個答案,但是爲什麼堅持XAML在2017年建立已被棄用? –

回答

1

的項目/解決方案的信息都存儲在ProjectsToBuild變量,所以你只需要這個變量的值傳遞到您的活動(InArgument),並獲得解決方案或項目的名稱由該代碼(InArgument變量:solutionPaths):

 foreach(string solution in solutionPaths) 
     { 
      Console.WriteLine(solution.Split(new char[] { '/' }).Last()); 
     } 

一個例子顯示所選擇的解決方案/在生成定義項目,以建立日誌:

  1. Add ForEach active(TypeArgument:String;值:ProjectsToBuild
  2. 添加WriteBuildMessage活性到的ForEach活性體(重要性:Microsoft.TeamFoundation.Build.Client.BuildMessageImportance.High;消息:項目
  3. 隊列建立與這個過程模板

enter image description here

2

你的活動需要BuildSettings類型,你與BuildSettings變量的值設置的屬性。

在活動代碼中,檢查ProjectsToBuild屬性的內容並提取解決方案文件的名稱,例如, System.IO.Path.GetFileNameWithoutExtension(this.BuildSettings.ProjectsToBuild[0])

EDIT

BuildSettings變量是全局定義的,沒有必要重新定義它。

BuildSettings屬性應該是

public InArgument<Microsoft.TeamFoundation.Build.Workflow.Activities.BuildSettings> BuildSettings { get; set; } 

,你必須在BuildSettings變量分配給該屬性的XAML屬性窗口。

要使用它的代碼應該更像

var buildSettings = GetValue<Microsoft.TeamFoundation.Build.Workflow.Activities.BuildSettings>(this.BuildSettings); 
string nameSolutionAuto = System.IO.Path.Get 
FileNameWithoutExtension(buildSettings.ProjectsToBuild[0]); 
+0

嗨,謝謝你的回覆,我試着做你解釋我,但我不明白,所以我編輯我的第一個消息向你展示我做了什麼。 – FrankVDB

+0

擴展的答案 –

+0

在XAML屬性窗口的屬性中,我可以爲BuildSettings添加什麼樣的值?您告訴我將值BuildSettings用作值,但不起作用。 – FrankVDB

相關問題