【问题标题】:How do I get the <Message> MSBuild task to show up in the Visual Studio project output?如何让 <Message> MSBuild 任务显示在 Visual Studio 项目输出中?
【发布时间】:2011-11-25 07:59:34
【问题描述】:

我正在尝试 printf debug 我的 Visual Studio 项目文件,方法是向控制台发送如下消息:

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

这可以从命令行工作:

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

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

【问题讨论】:

  • 我最近发现并使用了debug MSBuild with Visual Studio 的可能性——包括断点、变量检查等。它对复杂的构建项目非常有用。 (您需要修改注册表以启用 MSBuild 中未记录的 /debug 开关,它允许您在构建开始时附加调试器)

标签: visual-studio msbuild


【解决方案1】:

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

<Project InitialTargets="Test" ...

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

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

【讨论】:

  • 代替InitialTargets project 级别,您也可以在每个现有目标之前或之后显式指定它应该被执行。喜欢&lt;Target Name="Test" AfterTargets="AfterBuild"&gt;
【解决方案2】:

要更改 Visual Studio 2010 窗口中显示的构建输出详细程度,请打开 Options 对话框并选择 Projects and Solutions 下方的 Build and Run 设置 节点。

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

【讨论】:

  • 我没有更改设置,而是将我的消息重要性设置为高,这样我就不会得到比我需要的更多的冗长信息。谢谢!
  • 这是在代码中如何完成的:&lt;Message Importance="High" Text="..."/&gt;。 (Reference)
  • @SebastianKrysmanski 请考虑将您对&lt;Message Importance="High" Text="..."/&gt; 的评论转换为单独的答案,因为它非常有用,因此会有更多人从中受益。谢谢。
  • 另一种思路是设置Message任务的Condition参数,使其在Debug模式下重要,而在Release模式下重要。
【解决方案3】:

将值为 HighImportance 属性添加到 Message

像这样:

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

【讨论】:

    猜你喜欢
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    相关资源
    最近更新 更多