如何让输出显示在Visual Studio 2005的错误列表的消息窗格中?

我有一个像这样的头文件:

#ifndef __GEN_NOTE_MARKERS_TO_DEVELOPERS_HPP__ #define __GEN_NOTE_MARKERS_TO_DEVELOPERS_HPP__ #ifdef _DEBUG // macros for turning a number into a string #define STRING2(x) #x #define STRING(x) STRING2(x) #ifdef TRIAGE_MESG_AS_WARNING #define TRIAGE_TODO_TAG(description) __pragma(message(__FILE__"("STRING(__LINE__)") : warning : TRIAGE TO-DO: " STRING(description) )) #define TRIAGE_FIXTHIS_TAG(description) __pragma(message(__FILE__"("STRING(__LINE__)") : warning : TRIAGE FIXTHIS: " STRING(description) )) #else #define TRIAGE_TODO_TAG(description) __pragma(message(__FILE__"("STRING(__LINE__)") : message : TRIAGE TO-DO: " STRING(description) )) #define TRIAGE_FIXTHIS_TAG(description) __pragma(message(__FILE__"("STRING(__LINE__)") : message : TRIAGE FIXTHIS: " STRING(description) )) #endif #else #define TRIAGE_TODO_TAG(description) #define TRIAGE_FIXTHIS_TAG(description) #endif #endif // __GEN_NOTE_MARKERS_TO_DEVELOPERS_HPP__ 

其中,输出注释到Visual Studio 2005中的输出窗格。定义“TRIAGE_MESG_AS_WARNING”时,Visual Studio将收集这些消息,并将它们列为错误列表中的警告。 它这样做是因为文本格式匹配一个警告。 但是,我不希望他们始终显示为警告,我宁愿他们显示在错误列表的消息窗格中。

你如何格式化你放在“输出窗口”中的行,这样Visual Studio会自动将它们显示在“错误列表”窗口的“消息”标签中?

在上面的代码中,我为消息设置的格式看起来像来自其他输出的消息,但是没有以相同的方式获取。

一位同事build议我可能需要编写一个“自定义自动化对象”来写入消息窗格。 这看起来很痛苦,特别是因为错误窗格和警告窗格中的条目通过适当的格式化最终是微不足道的。 这是一个可能的途径吗?

我们使用的是非托pipeC ++,所以我们不能依靠托pipe(.NET)工具。 我们不想用钩子来扩展VS。

我相信他们只是了添加额外的类别:信息。 至少在外部工具的输出格式中没有指定它。

引用:“类别必须是” 错误 “或” 警告 “,大小写无关紧要,类似于起源,类别不能被本地化。

链接: http : //blogs.msdn.com/msbuild/archive/2006/11/03/msbuild-visual-studio-aware-error-messages-and-message-formats.aspx

好吧,我有一个寻找,看起来好像你可以做到这一点,如果你有Visual Studio SDK安装。

我在这里找到了这个链接

你需要使用我相信的Microsoft.VisualStudio.Shell命名空间。

从上面的链接代码片段如下:

 //Get the "Error List Window" ErrorListProvider errorProvider = new ErrorListProvider(this); Task newError = new Task(); newError.ErrorCategory = TaskErrorCategory.Error; // or TaskErrorCategory.Warning for warnings newError.Category = TaskCategory.BuildCompile; newError.Text = "Some Error Text"; errorProvider.Tasks.Add(newError); 

我还没有尝试过,所以如果你成功了,你可以回到这里以备将来参考。

我试图让这个工作,以及据我所知,除非你真的编写自己的VS插件解析输出和生成任务,它是不可能的。 这将是一个非常方便的功能,我只希望他们在将来的某个时候添加它(不能因为自己写一个插件而烦恼,太多的其他小型项目正在耗尽时间)

最后,我只是选择输出它作为一个警告,这不是太糟糕,看到我如何修复所有的警告(或者如果他们是有意的,关闭的代码和评论的警告如果不明显,为什么警告被忽略)

我可能不是正确的理解你的问题,但我会反正一枪。

你看过TraceSwitch的实现吗? 你可以实现不同的监听器,并输出信息到各种来源,如文本,控制台等

这可能是你需要的。

祝你好运!

你有没有尝试自定义任务列表关键字?

这个页面建议可以这样做。 我建议你从那里读,如果你还没有。

你不能在你的代码中使用“跟踪”命令吗? 这将只在“输出”窗口中放置任何文本。 因此,为了放置错误消息,您可能需要先格式化它们。