Visual studio 2008 自定义输出=>;VS2008 IDE中的错误解释列表

Visual studio 2008 自定义输出=>;VS2008 IDE中的错误解释列表,visual-studio-2008,scripting,compiler-errors,extensibility,Visual Studio 2008,Scripting,Compiler Errors,Extensibility,我在VS2008中有一个“数据库解决方案”项目——它通过某种模板为多个DB供应商生成SQL。为了节省时间,我还在VS2008中配置了一个工具(Python脚本),它可以编译单个存储过程。现在,有了Python脚本,我就可以自由地处理输出,并让它采用我想要的任何形式。我正在考虑如何识别这些错误和警告,并填充可点击的错误/警告列表。这就是典型的Oracle错误的样子: LINE/COL ERROR -------- ------------------------------------------

我在VS2008中有一个“数据库解决方案”项目——它通过某种模板为多个DB供应商生成SQL。为了节省时间,我还在VS2008中配置了一个工具(Python脚本),它可以编译单个存储过程。现在,有了Python脚本,我就可以自由地处理输出,并让它采用我想要的任何形式。我正在考虑如何识别这些错误和警告,并填充可点击的错误/警告列表。这就是典型的Oracle错误的样子:

LINE/COL ERROR
-------- -----------------------------------------------------------------
324/5    PL/SQL: Statement ignored
324/82   PLS-00363: expression 'VSOURCE_SYSTEM_ID' cannot be used as an
     assignment target
Warning: Procedure created with compilation errors.
PROCEDURE: ADD_PROPOSED error on creation
Errors for PROCEDURE ADD_PROPOSED:
LINE/COL ERROR
这可能是一个漫长的过程,但对我来说是值得的。我经常做这种事。谢谢大家!

接口有一个方法调用,该方法调用的参数类型为。此接口有一个方法void,可用于向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现在应该运行自定义工具并在错误窗口中生成输出。

您到底在寻找什么?在visual studio错误和警告工具栏中显示自定义工具输出的方法?是!这正是我想要的。再加上能够点击错误并返回其来源将是很好的,但我意识到这可能是非常困难的。谢谢。。。如何将其插入VS2008?我需要编译一个dll或类似的东西吗?我添加了一些关于如何将它们结合在一起的细节。