2011-12-06 2 views
3

여러 프로젝트에서 재사용하려는 T4 포함 파일이 있습니다. 그래서 NuGet 패키지를 만들고 패키지의 Tools 폴더에 파일을 저장했습니다. 이제 패키지 \ PackageName.x.x.x \ Tools 폴더에 설치되고 프로젝트의 T4 파일에 include 지시문을 추가 할 수 있습니다. 그러나이 단점은 패키지의 새 버전을 만들 때 바뀌는 경로에 버전 번호가 있다는 것입니다. 프로젝트의 모든 include 지시문을 업데이트해야합니다. 아무에게도이 접근법에 대한 좋은 힌트를 알고 있습니까?NuGet 패키지로 T4 포함 파일을 배포하는 방법

답변

2

이러한 T4 템플릿이 라이브러리 내에 코드를 생성해야한다면 콘텐츠 디렉토리에 삽입 할 수 있습니다.

이들은 nuget 패키지에 대한 참조가있는 라이브러리에 추가됩니다. 따라서 툴을 컨텐츠 이름으로 바꾸거나 새 폴더 컨텐츠를 추가하면됩니다. 해당 폴더에 하위 폴더를 추가 할 수도 있습니다. 또는 .cs 파일을 거기에 넣으십시오.

참조 : http://docs.nuget.org/docs/reference/nuspec-reference

+2

내 프로젝트를 그런 콘텐츠로 오염시키지 마십시오. 나는 (http://stackoverflow.com/a/8364027/1083432) 여기에 설명 된대로 TextTransformation에서 클래스를 상속하는 솔루션에 대한 생각 (나중에 발견) – Jaap

2

T4는 MSBuild에서 속성을 인식하지 못합니다 지침,하지만 하나가하는 어셈블리를 포함한다. 따라서 기본 템플릿 클래스를 사용하고 NuGet 패키지에서 어셈블리를 참조 할 수 있습니다.

NuGet 2.5 (원래 게시물 당시에는 아마 사용 가능하지 않음)를 사용하면 msbuild .props 파일을 만들 수 있습니다. Assign $ (MSBuildThisFileDirectory) 어셈블리에 대한 상대 경로를 새 msbuild 속성에 결합합니다. 그런 다음 새 속성을 NuGet 패키지를 사용하는 프로젝트의 T4 템플릿에서 사용할 수 있습니다.

관련 문제