使用源文件/行显示构建时工具中的错误

时间:2017-03-22 15:14:37

标签: msbuild msbuild-4.0

我的项目有一个MSBuild目标,它运行一个生成一些文件的工具:

<Exec Command="$(MyTool) @(Content)"
      ConsoleToMSBuild="true"
      IgnoreExitCode="False"
      LogStandardErrorAsError="true" />

如果该工具在其输入中检测到某些错误(@(Content)文件),则会将错误输出到标准错误。这使得MSBuild使构建失败,Visual Studio在错误列表中显示此文本 - 所有这些都很棒!

现在,该工具还知道错误所在的确切文件和行,并且我希望错误列表显示该错误,并且双击将导致该文件。如果该工具是MSBuild任务而不是独立的exe,我可以调用TaskLoggingHelper.LogError(..., file, lineNumber, ...)。如何使用独立的exe工具完成相同的操作?我是否需要编写一个解析工具错误的包装器任务?是否有这样的任务可用?

1 个答案:

答案 0 :(得分:3)

我不知道有任何现成的机制可以做到这一点,但请参阅例如Viewing PowerShell's Select-String output in Visual Studio:你需要做的就是让你的输出与VS所期望的相匹配,你自动获得所需的行为。 VS寻找像

这样的消息
<file>(<line>): error <code>: <message>

例如msbuild,编译器,链接器消息都遵循这种格式。因此,如果您的自定义工具输出格式化,它将显示在错误列表中,您可以双击它以导航到指定的文件和行。