문제

코드에서 T4 텍스트 템플릿을 프로그래밍 방식으로 실행하는 방법이 있습니까? 사용자 정의 도메인 별 언어를 만들고 있으며 사용자가 저장할 때마다 관련 텍스트 템플릿이 실행되기를 원합니다. 현재 이것이 DSL 모델에서하는 일입니다.

protected override void OnDocumentSaved(EventArgs e)
{
    IVsCommandWindow commandWindow = (IVsCommandWindow)this.ServiceProvider.GetService(typeof(IVsCommandWindow));
    if (commandWindow != null)
    {
        commandWindow.ExecuteCommand("TextTransformation.TransformAllTemplates");
    }
    base.OnDocumentSaved(e);
}

이것은 작동하지만 정말 성가신 부작용이 있습니다. 프로젝트에 여러 DSL 문구가있는 경우 각각 관련 텍스트 템플릿이있는 경우 모두 주어진 DSL 문서의 변경에 의해 영향을받는 것뿐만 아니라 실행하십시오. 이것은 큰 문제처럼 보이지 않을 수도 있지만 소스 컨트롤이 생성 된 모든 파일을 확인하게되며 문서가 많으면 변환에 실제로 시간이 걸릴 수 있습니다. 도움을 주셔서 감사합니다.

도움이 되었습니까?

해결책

Jean-Mark Prieur DSL 팀에서 DSL 도구 연구소. DSL 모델에서 직접이를 수행 할 수도 있습니다. itextTemplating 서비스. 템플릿 변환의 작동 방식에 대한 자세한 내용 여기.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top