2009-09-03 11 views

risposta

42

Utilizzare una proprietà o un articolo. Il tuo MSBuild che calcola il percorso, lo restituisce come una proprietà e tu usi questa proprietà come input per la tua altra attività.

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> 

Se è necessario passare un valore tra due di progetto MSBuild, è necessario creare una terza che chiamerà l'altro utilizzando MSBuild Task e utilizzare i TargetOutputs elemento di recuperare il valore che si volere.

+2

solo una breve nota: nel mio caso "ItemName" non funzionava. Non appena l'ho cambiato in 'PropertyName' ha funzionato come un incantesimo. – sebagomez

+0

Provato questo, ma ottenuto 'Il parametro" TaskParameter "non è supportato dall'attività" MyCustomTask ". Verificare che il parametro esista nell'attività e che sia una proprietà di istanza pubblica impostabile – jpierson

Problemi correlati