Visual Studio T4 템플릿이 포함 된 프로젝트에서 참조하는 어셈블리 중 하나에서 유형을 참조해야합니다. 그러나 참조 된 어셈블리는 NuGet 패키지에서 설치됩니다. NuGet 레퍼런스가 진화하면 NuGet이 내 솔루션의 패키지 폴더에 배치하는 경로도 변경됩니다. 예를 들어, 가정 내 NuGet 패키지는 다음과 같습니다T4 템플릿에 NuGet 어셈블리로드
- Facade.Contract.1.0.1 알파
그리고 내 프로젝트에서 그것의 상대 경로는 다음과 같습니다
- .. \ 패키지 \ Facade.Contract.1.0.1-alpha \ lib \ net4 \ Facade.Contract.dll
시험판이 베타 버전으로 업데이트되면 해당 경로가 변경됩니다. 패키지가 해제되면 경로가 변경됩니다. 그리고 경로가 변경 때마다, 내 *의 .TT 파일의 조립 라인은 유효 기간이 경과 :
- < # @ 어셈블리 이름 = ".. \ 패키지 \ Facade.Contract.1.0.1 알파 \ lib 디렉토리 \ net4 \ Facade.Contract.dll "#>
어셈블리 지시문을 사용하여이를 직접 수행 할 방법이 없다고 생각합니다. 그러나, 나는 미친 아이디어에 열려 있습니다. 어셈블리를 현재 또는 하위 또는 리플렉션 전용 AppDomain에로드 할 수 있습니까?
내가 할 수 있다고 생각하지만 동적으로 T4 논리를 사용하여 프로젝트의 참조에서 참조 된 어셈블리 경로를 탐색하는 방법을 잘 모르겠습니다.
아이디어가 있으십니까?
Visual Studio 내에서 또는 msbuild를 사용하여 빌드하는 동안 T4 템플릿을 어떻게 실행합니까? – Frank
Visual Studio 내에서 실행됩니다 (편집에서 말한 것과 달리 ... 최대한 빨리 수정합니다). 그래서 전 DTE에 접근해야합니다. – Trinition
이 기사에서 영감을 얻은 후 참조 경로를 탐색하기 위해 VSLangProj를 사용하여 약간의 진전을 이루었습니다. http://t4-editor.tangible-engineering.com/blog/add-references-to-visual-studio-project- from-t4-template.html – Trinition