【问题标题】:TFS 2017 - Get the Solution's name in C#TFS 2017 - 在 C# 中获取解决方案的名称
【发布时间】:2017-08-28 07:13:24
【问题描述】:

我想知道如何获取 XAML 构建定义正在使用的解决方案的名称。

例如,在我的 Build Defnition 的配置中,我有这个路径来选择我想应用这个 Build Definition 的解决方案:$/test/SolutionName/SolutionName.sln

如何使用 C# 代码为我的活动代码获取“解决方案名称”。

编辑:我的变量,我可以把什么作为默认收益?

代码:

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

【问题讨论】:

  • 我会尽快给你答案,但为什么要坚持使用已弃用的 2017 年构建的 XAML?

标签: c# visual-studio tfs build


【解决方案1】:

您的 Activity 需要一个 BuildSettings 类型的属性,您可以使用 BuildSettings 变量的值设置它。

在 Activity 代码中,检查 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]);

【讨论】:

  • 您好,感谢您的回复,我尝试按照您的解释进行操作,但我无法正确理解,因此我编辑了第一条消息以向您展示我所做的。
  • 扩展答案
  • 我可以在 XAML 属性窗口的属性中为 BuildSettings 设置什么样的值?您告诉我将 BuildSettings 用作值,但不起作用。
【解决方案2】:

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

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

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

  1. 添加 ForEach 活动(类型参数:字符串;值:ProjectsToBuild
  2. 将 WriteBuildMessage 活动添加到 ForEach 活动主体(重要性:Microsoft.TeamFoundation.Build.Client.BuildMessageImportance.High;消息:项目
  3. 使用此流程模板构建队列

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多