【问题标题】:How do I get the value of a MSBuild property from a custom task?如何从自定义任务中获取 MSBuild 属性的值?
【发布时间】:2009-03-04 07:00:52
【问题描述】:

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

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

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

【问题讨论】:

    标签: tfs msbuild properties


    【解决方案1】:

    这应该可以完成工作。

      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;
      }
    

    【讨论】:

    • 这有帮助,但我必须创建一个新引擎。 BuildEngine 属性仅包含一个 EngineProxy ,我无法将其应用于 Engine ......当我创建一个新引擎时,没有评估的属性。所以我刚拿出$(东西)。建议? :)
    • 无法转换,不是大小写 :)
    • 这真的很有帮助,但是既然 MS 已经弃用了 Microsoft.Build.BuildEngine.ProjectMicrosoft.Build.BuildEngine.Engine 类,我该怎么做呢?这是我发现的从自定义任务中读取属性的唯一示例。
    猜你喜欢
    • 2013-03-04
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多