如何在Visual Studio项目输出中显示<Message> msbuild任务?

Jus*_*ing 56 msbuild visual-studio

我试图通过向控制台发送消息来"printf()调试"我的Visual Studio项目文件,如下所示:

<Target Name="BeforeBuild">
  <Message Text="+++++++++++++++++++++++ Justin Dearing ++++++++++++++++++++++++++++++++++++" />
</Target>
Run Code Online (Sandbox Code Playgroud)

这可以从命令行工作:

BeforeBuild:
  +++++++++++++++++++++++ Justin Dearing ++++++++++++++++++++++++++++++++++++
Run Code Online (Sandbox Code Playgroud)

但是,消息不会显示在Visual Studio 2010构建输出中.是否有我可以使用的替代msbuild任务,或者Visual Studio中的设置我可以启用这些消息吗?

Dev*_*ert 66

我只是把别人的评论带到答案中,以便更容易找到.

添加重要性高属性Importance.

像这样:

<Message Importance="High" Text="+++ Justin Dearing +++" />
Run Code Online (Sandbox Code Playgroud)


Tho*_*fer 46

要更改VS2010窗口中显示的构建输出详细程度,请打开" 选项"对话框,然后选择" 项目和解决方案"节点下的" 构建和运行"设置.

除非您明确指定低消息重要性,否则您的消息应显示为正常详细程度或更高.

  • 以下是在代码中完成的操作:`<Message Importance ="High"Text ="..."/>`.([参考文献](http://msdn.microsoft.com/en-us/library/6yy0yx8d.aspx)) (26认同)
  • 我没有改变设置,而是让我的消息重要性高,所以我没有比我需要的更多的verbozity.谢谢! (15认同)
  • @SebastianKrysmanski请考虑将您对`&lt;Message Importance =“ High” Text =“ ...” /&gt;`的评论转为单独的答案,因为它非常有用,因此更多的人将从中受益。谢谢。 (2认同)

小智 11

对于使用 MSBuild 16 阅读本文的任何人,请记住您不能message在项目级别使用。您现在需要首先定义InitialTargets

<Project InitialTargets="Test" ...
Run Code Online (Sandbox Code Playgroud)

然后创建一个任务来放置消息:

  <Target Name="Test">
      <Message Importance="High" Text="A Message" />
  </Target>
Run Code Online (Sandbox Code Playgroud)

  • 除了“项目”级别的“InitialTargets”之外,您还可以在每个现有目标之前或之后明确指定它应该执行。像`&lt;Target Name="Test" AfterTargets="AfterBuild"&gt;` (2认同)