2010-06-23 3 views
0

everyone. 나는 진보 된 T4 질문을 가지고 있으며 누군가가 도울 수 있기를 희망합니다.T4와 DSL 통합 및 스크립트 오류 표시

나는 SQL과 유사한 DSL을 만들었고 스크립트는 내 C# 프로젝트의 '.satsql'파일에 저장됩니다.

// contents of myqueries.satsql 
SELECT <column t1.Id> FROM <table mytable t1> 

나는 파일을로드하고 구문 분석을 시도하는 .tt 파일이 있습니다. 실패하면 Visual Studio 오류 목록에 오류를 추가하고 싶습니다. 사용자가 오류를 클릭하면

myqueries.satsql (1,8) error: unknown column 'xid' on table 't3'. 
myqueries.satsql (2,9) error: bad reference: pid. 

, VS는 'myqueries.satsql'파일을 열어야하고 C 번호 오류의 경우와 마찬가지로, 해당 라인과 캐릭터에 커서를 가리 킵니다.

T4는 이미 void TextTransform.Error(string) 메서드를 제공하지만 C# 오류와 같은 방식으로 파일, 줄 및 문자를 설정할 수있는 기회를 제공하지 않습니다.

누군가 T4 파일이 T4 파일 자체가 아닌 다른 파일의 오류를보고하는 방법을 알고 있습니까?

많은 감사,

스티브 쿠퍼.

답변

1

TextTransformation.Errors 컬렉션을 사용하여 파일 및 줄 번호 정보의 오류를보고 할 수 있습니다.

+0

완벽하게 작동했습니다. 오류가 보호되기 때문에 나는 던져졌다. 그래서 intellisense는 TextTransformation 변수가 있다면 그것을 제안하지 않는다. (A) TextTransformation의 추상 서브 클래스를 만들 필요가있었습니다 - 저는 SqlTextTransformation이라고 부르며 (B) TT 파일에 <# @ template inherits = "MyGenerator.SqlTextTransformation "#> –