2012-12-12 2 views
2

ASP.NET MVC 3을 사용합니다 Custom CodeTemplates 하나의 t4 파일에 몇 가지 메서드를 넣은 다음 모든 t4 템플릿에 사용해야합니다.모든 메서드를 하나의 .tt 파일에 넣고 MVC의 CodeTemplates에있는 다른 t4 파일에 사용

<#@ template language="C#" #> 
<#@ assembly name="System" #> 
<#@ assembly name="System.Core" #> 
<#@ assembly name="System.ComponentModel.DataAnnotations" #> 
<#@ assembly name="System.Data" #> 
<#@ assembly name="System.Data.Entity" #> 
<#@ assembly name="System.Data.Linq" #> 
<#@ assembly name="System.Xml.Linq" #> 
<#@ import namespace="System" #> 
<#@ import namespace="System.Linq" #> 
<#@ import namespace="System.Text" #> 
<#@ import namespace="System.Collections.Generic" #> 
<#@ import namespace="System.ComponentModel.DataAnnotations" #> 
<#@ import namespace="System.ComponentModel" #> 
<#@ import namespace="System.Data.Linq.Mapping" #> 
<#@ import namespace="System.Data.Objects.DataClasses" #> 
<#@ import namespace="System.Reflection" #> 
<#@ import namespace="Microsoft.VisualStudio.Web.Mvc.Scaffolding.BuiltIn" #> 

<#+ 
public class XXD { 
    public string getitNow(){ 
     return "Yup thats it!"; 
    } 
} 
#> 

가 그럼 난 이렇게 create.tt 파일에서 사용 :

<#@ include file="general.tt" #> 

... 

<#+ 

private string GetitNow(){ 
    XXD xx = new XXD(); 
    return xx.getitNow(); 
} 

을하지만, 내가보기를 추가 할 경우에 에러가 발생

그래서이 내 general.tt 파일입니다 템플릿 사용 :

오류 : 포함 된 파일 'general.tt'을로드하면 null 또는 빈 문자열이 반환됩니다. 변형은 실행되지 않습니다.

그래서 문제가 어디에 있습니까? 이 일을하는 당신의 제안은 무엇입니까?

답변

5

마지막으로 확인한 바에 따르면 MVC 스캐 폴딩은 ITextTemplatingEngineHost의 사용자 지정 구현을 계속 사용했으며, 이는 Visual Studio의 ITextTemplating 서비스와는 다른 지시문을 구현합니다. Connect 버그를 제출하고 발생한 문제를 설명하고 MVC의 T4 구현을이 제한 사항 및 기타 제한 사항이없는 기본 제공 ITextTemplating 서비스로 변경하도록 요청하십시오.

+0

올렉이 맞습니다. 두 조각을 포함시켜 MVC 전용 템플릿을 출력하는 하나의 일반 T4 템플릿을 사용하면이 문제를 해결할 수 있습니다. 즉, 템플리트를 생성하는 템플리트. 그러나 이것은 새로운 프로젝트를 처음으로 시작하는 사람들에게는 매우 친숙하지 않습니다. – GarethJ

0

일반적으로 파일을 찾을 수 없다는 의미입니다. create.tt과 다른 경로에 general.tt이 있습니까?

+0

그렇습니다. 또한'general.tt'에 정의 된'XXD' 클래스 또는'getitNow()'메소드를 정의하고자 할 때 인텔리 센스가 있습니다 – Saeid

관련 문제