Why is this output parameter empty?

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?

+5
source share

Source: https://habr.com/ru/post/1241498/


All Articles