如何从自定义任务中获取 MSBuild 属性的值?

Odd*_*eif 5 msbuild tfs properties

有没有办法从自定义任务访问 MSBuild 属性的值?

我知道我可以将它们全部发送,但最好不要:) 我正在尝试从TFS构建中执行此操作。

或者有什么方法可以访问当前正在运行的“构建脚本”?也许就像一个对象模型,然后从那里得到我需要的东西?

Jul*_*rau 2

这应该可以完成工作。

  public override bool Execute()
  {
    string projectFile = BuildEngine.ProjectFileOfTaskNode;

    Engine buildEngine = new Engine(System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory());

    Project project = new Project(buildEngine);
    project.Load(projectFile);
    foreach(var o in project.EvaluatedProperties)
    {
      // Use properties
    }

    return true;
  }
Run Code Online (Sandbox Code Playgroud)

  • 这确实很有帮助,但是既然 MS 已经弃用了“Microsoft.Build.BuildEngine.Project”和“Microsoft.Build.BuildEngine.Engine”类,我该如何去做呢?这是我发现的从自定义任务读取属性的唯一示例。 (5认同)