2009-03-04 100 views
3

有没有一些方法可以从自定义任务访问msbuild属性的值?我知道我可以将它们全部发送出去,但是不要试图从tfs构建中实现这一点。如何从自定义任务获取msbuild属性的值?

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

回答

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

这有帮助,但我不得不创建一个新的引擎。 BuildEngine属性只包含一个EngineProxy,我无法对引擎进行处理......而且当我创建了一个新的引擎而非属性vas评估的引擎时。所以我刚刚拿出$(某物)。建议? :) – Oddleif 2009-03-04 09:53:34