2009-09-03 3 views

Antwort

42

Verwenden Sie eine Eigenschaft oder ein Element. Ihr MSBuild, das den Pfad berechnet, als Eigenschaft zurückgibt und diese Eigenschaft als Eingabe für Ihre andere Aufgabe verwendet.

public class CalculatePathTask : ITask 
{ 
    [Output] 
    public String Path { get; set; } 

    public bool Execute() 
    {         
     Path = CalculatePath(); 

     return true; 
    } 
} 
<Target Name="CalculateAndUsePath"> 
    <CalculatePathTask> 
    <Output TaskParameter="Path" PropertyName="CalculatePath"/> 
    </CalculatePathTask> 

    <Message Text="My path is $(CalculatePath)"/> 
</Target> 

Wenn Sie einen Wert zwischen zwei MSBuild-Projekt übergeben müssen, sollten Sie einen dritten erstellen, die andere mit MSBuild Aufgabe anrufen und verwenden Sie den TargetOutputs Element den Wert zurück zu bekommen, dass Sie wollen.

+2

nur eine kurze Anmerkung: In meinem Fall 'ItemName' funktionierte nicht. Sobald ich es in 'PropertyName' änderte, funktionierte es wie ein Zauber. – sebagomez

+0

Dies wurde versucht, aber der Parameter 'TaskParameter' wurde von der Task 'MyCustomTask' nicht unterstützt. Überprüfen Sie, ob der Parameter für die Aufgabe vorhanden ist und ob es sich um eine einstellbare Eigenschaft der öffentlichen Instanz handelt.' – jpierson