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.
solo una breve nota: en mi caso 'ItemName' no funcionaba. Tan pronto como lo cambié a 'PropertyName' funcionó como un amuleto. – sebagomez
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