How do I get the <Message> MSBuild task to show up in the Visual Studio project output?

I'm trying to printf debug my Visual Studio project file by spewing messages to the console like this:

<Target Name="BeforeBuild">
<Message Text="+++++++++++++++++++++++ Justin Dearing ++++++++++++++++++++++++++++++++++++" />
</Target>

This works from the command line:

BeforeBuild:
+++++++++++++++++++++++ Justin Dearing ++++++++++++++++++++++++++++++++++++

However, the messages don't show up in the Visual Studio 2010 build output. Is there an alternative MSBuild task I can use, or a setting in Visual Studio I can enable to make these messages appear?

31447 次浏览

To change the build output verbosity shown in the Visual Studio 2010 window, open the Options dialog and select the Build and Run settings below the Projects and Solutions node.

Unless you explicitly specify a low message importance, your messages should show up at Normal verbosity or higher.

Add the Importance attribute with value High to Message.

Like this:

<Message Importance="High" Text="+++ Justin Dearing +++" />

For anyone reading this with MSBuild 16, bear in mind that you can't use message at the project level. You now need to first define InitialTargets

<Project InitialTargets="Test" ...

And then create a task to place the message in:

  <Target Name="Test">
<Message Importance="High" Text="A Message" />
</Target>

In VisualStudio 2019 a <Message> disappears from Build log if any <Error> Task occurs in "Build" target (and others?) even if <Error> is after <Message>.

In contrast msbuild.exe 16.8.2.56705 displays <Message> in any case.

[Question only implies by example that BeforeBuild is used, I answered anyway as the question title and text perfectly matched my problem that the message was not shown]