Как получить вывод для отображения на панели сообщений в списке ошибок для Visual Studio 2005? - PullRequest
21 голосов
/ 17 октября 2008

У меня есть такой заголовочный файл:

#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 автоматически покажет их в Вкладка «Сообщения» в «Списке ошибок» окна?

Формат, который я настроил для сообщений в приведенном выше коде, выглядит как сообщение из другого вывода, но не получается таким же образом.

Сотрудник предположил, что мне может понадобиться написать «пользовательский объект автоматизации» для записи на панель «Сообщения». Это кажется болезненным, особенно потому, что в конечном итоге можно просто вводить записи на панели ошибок и на панели предупреждений путем правильного форматирования. Это возможный проспект?

Мы используем неуправляемый C ++, поэтому мы не можем полагаться только на управляемые (.NET) инструменты. Мы не хотим расширять VS крючками.

Ответы [ 6 ]

5 голосов
/ 26 мая 2009

Мне кажется, они просто забыли о добавлении дополнительной категории: информация. По крайней мере, он не указан в выходном формате для внешних инструментов.

Ссылка: "Категория должна быть либо ' error ', либо ' warning '. Случай не имеет значения. Как и источник, категория не должна быть локализована."

Ссылка: http://blogs.msdn.com/msbuild/archive/2006/11/03/msbuild-visual-studio-aware-error-messages-and-message-formats.aspx

2 голосов
/ 20 мая 2009

Хорошо, у меня была охота, и похоже, что вы можете сделать это, если у вас установлен 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);

Я еще не пробовал, поэтому, если вам это удастся, вы можете опубликовать здесь для дальнейшего использования, пожалуйста.

1 голос
/ 27 мая 2009

Я пытался заставить это работать, и, насколько я могу судить, это невозможно, если вы на самом деле не напишите свой собственный плагин для VS, который анализирует вывод и генерирует задачи. Это было бы очень удобно иметь функцию, и я просто надеюсь, что они добавят ее в какой-то момент в будущем (я не могу быть обеспокоен написанием плагина самостоятельно, слишком много других небольших проектов, чтобы сэкономить время: L)

В конце концов, я просто решил вывести его как предупреждение, что не так уж плохо, если посмотреть, как я пытаюсь исправить все предупреждения (или, если они являются преднамеренными, отключите предупреждение для этого небольшого код и комментарий, если не очевидно, почему предупреждение игнорируется)

0 голосов
/ 03 июня 2009

Вы пытались настроить ключевые слова списка задач?

Эта страница предполагает, что это возможно сделать. Я предлагаю вам прочитать оттуда, если вы еще этого не сделали.

0 голосов
/ 11 мая 2009

Не могли бы вы использовать команду «Трассировка» в вашем коде? Это просто поместит любой текст, который вы говорите, в окно вывода. Поэтому для размещения сообщений об ошибках вам, вероятно, необходимо сначала отформатировать их.

0 голосов
/ 17 октября 2008

Возможно, я неправильно понимаю ваш вопрос, но все равно попробую.

Вы смотрели на внедрение TraceSwitch? Вы можете реализовывать разные слушатели и выводить информацию в различные источники, такие как текст, консоль и т. Д.

Это может быть то, что вам нужно.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...