Форматирование вывода настраиваемого инструмента, чтобы я мог дважды щелкнуть ошибку в Visual Studio и файл открылся

Я написал инструмент командной строки, который предварительно обрабатывает несколько файлов, а затем компилирует их с помощью CodeDom. Инструмент записывает уведомление об авторских правах и некоторый прогресс-текст в стандартный вывод, а затем записывает все ошибки на этапе компиляции в следующем формате:

foreach (var err in results.Errors) {
    // err is CompilerError
    var filename = "Path\To\input_file.xprt";
    Console.WriteLine(string.Format(
        "{0} ({1},{2}): {3}{4} ({5})",
        filename,
        err.Line,
        err.Column,
        err.IsWarning ? "" : "ERROR: ",
        err.ErrorText,
        err.ErrorNumber));
}

Затем он записывает количество ошибок, например «14 ошибок».

Это пример того, как ошибка появляется в консоли:

Path\To\input_file.xrpt (73,28): ERROR: An object reference is required for the non-static field, method, or property 'Some.Object.get' (CS0120)

Когда я запускаю это как настраиваемый инструмент в VS2008 (вызывая его в командной строке события после сборки одной из сборок моего проекта), ошибки выглядят красиво отформатированными в Список ошибок с правильным текстом в каждом столбце. Когда я пролистываю имя файла, появляется полный путь. Строка и столбец отличаются от исходного файла из-за предварительной обработки, которая в порядке. Единственное, что выделяется, это то, что проект, указанный в списке, является тем, который имеет событие post-build.

Проблема в том, что когда я дважды щелкаю по ошибке, ничего не происходит. Я ожидал, что файл откроется в редакторе.

Я хорошо осведомлен о пространстве имен Microsoft.VisualStudio.Shell.Interop , но я думаю, что это должно быть возможно, просто написав в стандартный вывод .

РЕДАКТИРОВАТЬ : Я заметил некоторые моменты и решил это сам:

  • FQP, который появляется при наведении курсора на имя файла, на самом деле был неправильным,
  • Я выводил путь относительно корня решения путь,
  • инструмент вызывается в проекте в другой папке,
  • и VS формирует путь относительно пути вызывающего проекта
12
задан Rebecca Scott 22 June 2011 в 07:12
поделиться