2013-01-21 2 views
1

어떻게 플러그인을 통해 프로젝트에서 T4 파일을 실행할 수 있습니까? 어떤 힌트/단서? 특히 부족한 EnvDte 문서를 찾고 있습니다.Builds에서 T4를 실행하는 VIsual Studio 플러그인

빌드 이벤트에서 T4 템플릿을 실행해야하므로이 솔루션을 얻었습니다. 뭔가가 바뀔 때마다 수동으로 도구를 실행하고 싶지 않습니다. 명령 줄에서 실행할 수 없습니다. T4 스크립트는 DTE 개체에 대한 참조를 갖고 있기 때문에 cmd 줄에서 실행하면 barfs가 실행됩니다.

또한 매크로 사용을 고려했지만 VS2012에서 매크로를 사용할 수 없으며 내 로컬 컴퓨터에 매크로 IDE를 실행할 수없는 버그가 있습니다. 그래서 이것은 좋은 짧은/장기 솔루션이 아닙니다.

최상의 솔루션은 빌드시 T4 파일을 실행하는 자체 플러그인을 작성하는 것 같습니다. 내가 가진 이것은까지입니다 :

  1. 프로젝트 TT에
  2. 실행 T4의 모든 T4 파일 찾기 :

    public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) 
    { 
        _applicationObject = (DTE2)application; 
        _addInInstance = (AddIn)addInInst; 
        _applicationObject.Events.BuildEvents.OnBuildBegin += customBuildHander; 
    
    } 
    
    void customBuildHander(vsBuildScope Scope, vsBuildAction Action) 
         { 
          if (Scope == vsBuildScope.vsBuildScopeProject) 
          { 
           //Need to run steps 1 thru 3 here! 
          } 
         } 
    

    은 어떻게 든 위의 코드에 다음과 같은 루틴에 맞게 필요 파일, T4 파일에서 액세스 할 수 있도록 DTE 객체를 전달하는 동안

  3. T4 스크립트에서 읽을 수 있도록 $ (ProjectDir)과 같은 환경 변수도 선언합니다. < - DTE 또는 별도의 프로세스입니다.

도와주세요!

+0

vscommands가이 작업을 수행 할 수있는 옵션이 있다고 생각하십니까? –

+0

본 적이 있습니까 http://stackoverflow.com/questions/1646580/get-visual-studio-to-run-a-t4-template-on-every-build –

+0

@AlexeiLevenkov 예, 모두 시도했지만, 내 t4 스크립트는 모든 DTE 및 환경 변수 참조에서 barfs를 사용합니다. – Alwyn

답변

2

DATE 인프라를 사용하여 IDE 명령 인 TransformAllTemplates를 호출하여 어쨌든 모든 명령을 실행하려는 경우 자신의 순회를 수행하는 대신 명령을 실행해야합니다.

관련 문제