4

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?

user247702
  • 23,641
  • 15
  • 110
  • 157

0 Answers0