Jon*_*han 3 msbuild msbuild-4.0
我的项目有一个 MSBuild 目标,它运行一个生成一些文件的工具:
<Exec Command="$(MyTool) @(Content)"
ConsoleToMSBuild="true"
IgnoreExitCode="False"
LogStandardErrorAsError="true" />
Run Code Online (Sandbox Code Playgroud)
如果该工具在其输入(@(Content)文件)中检测到某些错误,则会将错误输出为标准错误。这使得 MSBuild 构建失败,并且 Visual Studio 会在错误列表中显示此文本 - 所有这些都很棒!
现在,该工具还知道错误所在的确切文件和行,我希望错误列表显示这一点,双击将导致该文件。如果该工具是 MSBuild 任务而不是独立的 exe,我可以调用TaskLoggingHelper.LogError(..., file, lineNumber, ...). 如何使用独立的 exe 工具完成相同的操作?我是否需要编写一个包装器任务来解析工具的错误?有这样的任务吗?
我不知道有任何现成的机制可以做到这一点,但请参阅例如在 Visual Studio 中查看 PowerShell 的 Select-String 输出:您需要做的就是使您的输出与 VS 期望的匹配,并且您会自动获得所需的行为。VS 寻找类似的消息
<file>(<line>): error <code>: <message>
Run Code Online (Sandbox Code Playgroud)
例如 msbuild、编译器、链接器消息都遵循这种格式。因此,如果您拥有该格式的自定义工具输出,它将显示在错误列表中,您可以双击它以导航到指定的文件和行。
| 归档时间: |
|
| 查看次数: |
434 次 |
| 最近记录: |