4

VS2008에 "데이터베이스 솔루션"프로젝트가 있습니다. 일종의 템플릿에서 둘 이상의 DB 공급 업체를 위해 SQL을 생성합니다. 시간을 절약하기 위해 개별 저장 프로 시저를 컴파일 할 수있는 VS2008 구성 도구 (Python 스크립트)도 있습니다. 자, 파이썬 스크립트를 사용하면 출력물을 처리 할 자유가 있으며 원하는 형식을 취할 수 있습니다. 나는이 오류와 경고를 어떻게 든 인식하고 클릭 가능한 오류/경고 목록을 채우려는 아이디어를 가지고 놀고 있습니다. 일반적인 Oracle 오류는 다음과 같습니다.사용자 지정 출력 => VS2008 IDE의 해석 목록>

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 

이것은 매우 유용 할 수 있지만 저에게는 가치가 있습니다. 나는이 물건을 많이한다. 고맙습니다!

+1

정확히 무엇을 찾으십니까? 시각적 스튜디오 오류 및 경고 도구 모음에 사용자 지정 도구의 출력을 표시하는 방법은 무엇입니까? –

+0

예! 그것이 내가 원하는 것입니다. 오류를 클릭하고 소스로 돌아갈 수 있다는 점이 좋을 것입니다. 그러나 이것이 매우 어려울 수 있음을 알고 있습니다. –

답변

2

IVsSingleFileGenerator 인터페이스에는 IVsGeneratorProgress 유형의 매개 변수가있는 void Generate(...) 메서드 호출이 있습니다. 이 인터페이스에는 Visual Studio 오류 목록에 오류 및 경고를보고 할 수있는 void GeneratorError() 메서드가 있습니다. 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에서 사용자 지정 도구를 실행하고 오류 창에 출력을 생성해야합니다.

+0

감사합니다 ... 그리고 어떻게 이것을 VS2008에 연결합니까? dll이나 그런 종류의 것을 컴파일해야합니까? –

+1

어떻게 모두 함께해야하는지에 대한 세부 정보를 추가했습니다. –