이 솔루션을 찾을 수있는 위치와 방법을 알지 못해 오랜 시간이 걸렸으므로 참조로 취한 단계를 설명하는이 질문을 만들었습니다.envDTE 네임 스페이스를 사용하여 T4에서베이스 클래스의 속성을 얻는 방법?
내 비즈니스 논리 프로젝트에서 기존 클래스를 기반으로 일부 클래스를 만들고 T4 템플릿이있는 다른 프로젝트 (동일한 솔루션)를 만들기 위해 T4 템플릿을 만듭니다. Visual StudioHelper 포함 템플릿 갤러리에서 VisualStudioHelper를 이미로드했습니다. 이것은 Entity-Project에서 엔티티 클래스를 가져 오는 데 많은 도움이되었습니다. 의 특성을 나는 (분명히) 발견
var allProperties = VisualStudioHelper.CodeModel.GetAllCodeElementsOfType(targetClass.Members, EnvDTE.vsCMElement.vsCMElementProperty, true);
것을 : 내 속성을 조회 할 수있는 내 클래스가 이제
var allClasses = VisualStudioHelper.CodeModel.GetAllCodeElementsOfType(targetProject.CodeModel.CodeElements, EnvDTE.vsCMElement.vsCMElementClass, false);
CodeClass targetClass= allClasses
.Cast<CodeClass>()
.Where(p => p.Name == "ClassName")
.Single();
: 거기에서
Project targetProject= VisualStudioHelper.GetProject("ProjectName");
나는 내 수업을 얻었다 baseclass는 대상 CodeClass 요소의 속성으로 등록되지 않습니다.
누군가 내 T4 템플릿의 기본 클래스 속성을 쿼리하도록 도와 줄 수 있습니까?
설명한대로 T4는 비즈니스 로직 계층 (BLL)에 있습니다. 대상이 정확히 내 BLL에서 내 DAL과 동일한 EF-CodeFirst를 사용했기 때문에 대상이되는 엔티티 클래스는 일반적인 Entity 프로젝트에 있습니다. . 기본 클래스는 EF-CodeFirst를 사용할 때 사용하는 모든 단일 엔터티에 대한 속성을 포함하여 직접 작성한 공용 라이브러리 프로젝트 (Nuget)에서 가져옵니다.
희망 누군가가 나에게 도움이 될 수 있습니다.
친절 감사, 루크 Krijnen 난 당신이 VisualStudioHelper있어 참조