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 am performing 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 result:
warning: HelloWorld task entry
warning: setting "Message"
warning: set 'Message' to 'Hello World!'
warning: exiting the HelloWorld task
warning: HelloWorld completed
warning: Message:
Why is the Message output parameter empty?
Stijn source share