Интерфейс IVsSingleFileGenerator имеет вызов метода void Generate (...) , который имеет параметр типа IVsGeneratorProgress .Этот интерфейс имеет метод void GeneratorError () , который позволяет сообщать об ошибках и предупреждениях в список ошибок Visual Studio.GenerateError () принимает строку и столбец среди других параметров, поэтому я предполагаю, что двойной щелчок по вашей пользовательской ошибке приведет вас к соответствующему месту в вашем исходном файле.
Чтобы собрать все вместе, я бы сделал что-то вродеследующее:
public class MyGenerator : IVsSingleFileGenerator
{
public Generate(string path, string inputContents, string namespace, IntPtr[] outputContents, out unit outputLength, IVsGeneratorProgress progress)
{
// Invoke your Python script
// Parse the error output from either a file or structure
// Assume you generate two lists: one for warnings, one for errors
foreach (var error in PythonErrors)
progress.GenerateError(false, 0, error.Text, error.Line, error.Column);
foreach (var warning in PythonErrors)
progress.GenerateError(true, 0, warning.Text, warning.Line, warning.Colum);
}
}
Скомпилируйте это в сборку.(Мне неясно, должен ли это быть EXE или DLL, но я подозреваю, что любой из них будет работать, так как у вас есть класс, который реализует правильный интерфейс.) Затем перейдите к свойствам каждого файла SQL в вашем проекте и свяжите MyGeneratorпользовательский инструмент с ним.При компиляции проекта Visual Studio теперь должна запустить свой собственный инструмент и сгенерировать вывод в окне ошибок.