2009-09-03 9 views

Respuesta

42

Usa una propiedad o un elemento. Su MSBuild que calcula la ruta, la devuelve como una propiedad y usa esta propiedad como entrada para su otra tarea.

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> 

Si tiene que pasar un valor entre dos proyectos de MSBuild, se debe crear un tercero que llamará al otro utilizando MSBuild Tareas y utilizar los TargetOutputs elemento de recuperar el valor que querer.

+2

solo una breve nota: en mi caso 'ItemName' no funcionaba. Tan pronto como lo cambié a 'PropertyName' funcionó como un amuleto. – sebagomez

+0

Probé esto pero obtuvo 'El parámetro" TaskParameter "no es compatible con la tarea" MyCustomTask ". Verifique que el parámetro existe en la tarea, y es una propiedad de instancia pública configurable. – jpierson

Cuestiones relacionadas