TFS 2017 - 在C#中获取解决方案的名称

时间:2017-04-03 12:09:44

标签: c# visual-studio tfs build

我想知道如何获得XAML Build Definition正在使用的解决方案的名称。

例如,在我的构建定义的配置中,我有这条路径来选择我想应用这个构建定义的解决方案:$ / test / SolutionName / SolutionName.sln

我如何获得" SolutionName"对于我的活动代码,使用C#代码。

编辑:我的变量,我可以将什么作为默认收益? enter image description here

代码:

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

2 个答案:

答案 0 :(得分:2)

您的活动需要BuildSettings类型的属性,您可以使用BuildSettings变量的值设置该属性。

在活动代码中,检查ProjectsToBuild属性的内容并提取解决方案文件的名称,例如System.IO.Path.GetFileNameWithoutExtension(this.BuildSettings.ProjectsToBuild[0])

修改

BuildSettings变量是全局定义的,无需重新定义。

BuildSettings属性应为

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

,您必须在XAML属性窗口中将BuildSettings 变量分配给此属性。

要使用它,代码应该更像

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

答案 1 :(得分:1)

项目/解决方案信息存储在ProjectsToBuild变量中,因此您只需将此变量值传递给Activity(InArgument)并通过此代码获取解决方案或项目名称(InArgument变量:solutionPaths):

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

在构建定义中显示所选解决方案/项目以构建日志的示例:

  1. 添加ForEach活动(TypeArgument:String;值:ProjectsToBuild
  2. 将WriteBuildMessage激活添加到ForEach活动正文(重要性:Microsoft.TeamFoundation.Build.Client.BuildMessageImportance.High;消息:项目
  3. 使用此流程模板构建队列
  4. enter image description here