Как получить вывод для отображения в панели "Сообщения" списка ошибок для 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 будут автоматически отображать их в Вкладка "Сообщения" в "Список ошибок" окно?
Формат, который у меня настроен для сообщений в приведенном выше коде, выглядит как сообщение с другого выхода, но не собирается таким же образом.
Сотрудник предложил мне, что мне может понадобиться написать "пользовательский объект автоматизации" для записи на панель "Сообщения" . Это похоже на боль, тем более, что тривиально заканчивать вводами на панели "Ошибка" и "Предупреждение" просто путем правильного формирования. Это возможный путь?
Мы используем неуправляемый С++, поэтому мы не можем полагаться только на управляемые (.NET) инструменты. Мы не хотим расширять VS с помощью крючков.
Ответы
Ответ 1
Я считаю, что они просто забыли о добавлении дополнительной категории: info.
По крайней мере, он не указан в формате вывода для внешних инструментов.
Образец цитирования: "Категория должна быть либо" ошибкой ", либо" предупреждением ". Случай не имеет значения. Как и происхождение, категория не должна быть локализована".
Ссылка: http://blogs.msdn.com/msbuild/archive/2006/11/03/msbuild-visual-studio-aware-error-messages-and-message-formats.aspx
Ответ 2
Хорошо, у меня была охота, и кажется, что вы можете это сделать, если у вас установлен SDK Visual Studio.
Я нашел эту ссылку здесь
Мне нужно использовать пространство имен 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);
Я еще не пробовал этого, поэтому, если вы успешно, вы можете отправить его здесь для дальнейшего использования.
Ответ 3
Я попытался заставить это работать, и, насколько я могу судить, его невозможно, если вы фактически не написали свой собственный плагин для VS, который анализирует вывод и создает задачи. Это была бы очень удобная функция, и я просто надеюсь, что они добавят ее в какой-то момент в будущем (не стоит беспокоиться о создании подключаемого модуля, слишком много других небольших проектов, которые продолжаются, чтобы сэкономить время: L)
В конце концов, я просто решил вывести его как предупреждение, что не так уж плохо, поскольку я пытаюсь исправить все предупреждения (или, если они намерены, отключить предупреждение для этого небольшого количества код и комментарий, если не ясно, почему предупреждение игнорируется)
Ответ 4
Возможно, я не понимаю ваш вопрос правильно, но я все равно сделаю это.
Вы посмотрели на имплантацию TraceSwitch? Вы можете реализовать различные слушатели и выводить информацию в различные источники, такие как текст, консоль и т.д.
Это может быть то, что вам нужно.
Удачи!
Ответ 5
Вы пытались настроить ключевые слова в списке задач?
Эта страница позволяет сделать это. Я предлагаю вам прочитать оттуда, если вы еще этого не сделали.
Ответ 6
Не могли бы вы использовать команду "Trace" в вашем коде? Это просто поместит любой текст, который вы укажете в окне "Вывод". Поэтому для размещения сообщений об ошибках вам нужно сначала отформатировать их.