Подтвердить что ты не робот

Как получить вывод для отображения в панели "Сообщения" списка ошибок для 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 с помощью крючков.

4b9b3361

Ответ 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" в вашем коде? Это просто поместит любой текст, который вы укажете в окне "Вывод". Поэтому для размещения сообщений об ошибках вам нужно сначала отформатировать их.