I have a task with an output parameter:
public class HelloWorld
: Task
{
[Output]
public string Message { get; set; }
public override bool Execute()
{
Log.LogWarning("HelloWorld task entry");
Log.LogWarning("Setting 'Message'");
this.Message = "Hello World!";
Log.LogWarning("Set 'Message' to '{0}'", this.Message);
Log.LogWarning("HelloWorld task exit");
return true;
}
}
I execute this task in another project:
<UsingTask TaskName="HelloWorld" AssemblyFile="path to dll" />
<Target Name="BeforeBuild">
<HelloWorld>
<Output TaskParameter="Message" PropertyName="Message" />
</HelloWorld>
<Warning Text="HelloWorld task has finished" />
<Warning Text="Message: @(Message)" />
</Target>
This is the build output:
warning : HelloWorld task entry
warning : Setting 'Message'
warning : Set 'Message' to 'Hello World!'
warning : HelloWorld task exit
warning : HelloWorld task has finished
warning : Message:
Why is the Message
output parameter empty?