2

ASP.NET MVC 3カスタム CodeTemplatesを使用します。いくつかのメソッドを 1 つの t4 ファイルに入れ、それをすべての t4 テンプレートで使用する必要があります。

だから、これは私のgeneral.ttファイルです:

<#@ 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' をロードすると、null または空の文字列が返されました。変換は実行されません。

では、どこに問題があるのでしょうか。これを行うためのあなたの提案は何ですか?

4

2 に答える 2

5

前回確認したとき、MVC スキャフォールディングは、Visual Studio の ITextTemplating サービスとは異なる方法でインクルード ディレクティブを実装する ITextTemplatingEngineHost のカスタム実装をまだ使用していました。Connectのバグを送信し、発生している問題を説明し、MVC の T4 実装を組み込みの ITextTemplating サービスに変更するよう依頼することをお勧めします。これには、この制限やその他の制限はありません。

于 2012-12-12T20:10:18.330 に答える
0

これは通常、ファイルが見つからないことを意味します。general.ttへの別のパスにありcreate.ttますか?

于 2012-12-12T11:41:38.013 に答える