2010-08-08 5 views
1

T4 템플릿에서 동일한 어셈블리 및 네임 스페이스의 도우미 메서드로 코드를 이동하여 T4 템플릿에서 어셈블리 참조 문제를 해결하려고했지만 T4에서 거부했습니다. 내 도우미 방법을 찾으십시오. T4 템플릿과 같은 어셈블리에서 메서드에 액세스 할 수 없습니다.

도우미 방법 :

namespace PocoGenerator 
{ 
    public class EntityReflector 
    { 
     public static IEnumerable<PropertyInfo> GetPropertiesForTemplate() 
     { 
      var baseNameSpace = ""; 
      var assemblyName = "DataObjects"; 

반항적 인 템플릿 코드 : 당신이 어셈블리를 사용해야합니다 있도록

<# foreach(PropertyInfo prop in PocoGenerator.EntityReflector.GetPropertiesForTemplate()) { #> 
public <#= prop.PropertyType #> <#= prop.Name #> {get; set; } 
<# } #> 

답변

1

T4가, 프로젝트 코드와 같은 맥락에서 컴파일되지 않는다 지시문을 사용하여 프로젝트 출력을로드하십시오.

VS2010 SP1을 사용하는 동안에는 어셈블리 잠금 문제가 없습니다.

그러나 클린 빌드를 부트 스트랩하기 위해 바이너리 버전이 필요하기 때문에 빌드에 도움이되는 어셈블리에 기여하는 재귀 템플릿은 취약 할 수 있습니다.

가능하다면 헬퍼 코드를 도구 집합의 일부가 아닌 완성 된 프로젝트의 일부가 아닌 도우미 어셈블리로 옮길 수 있습니다.

관련 문제