1

MVC プロジェクトを作成し、「Class1.cs」を (同じプロジェクト内に) Class1 コードに追加しました。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MvcApplication2.Models;
namespace MvcApplication2
{
    public class EntityAttribute
    {
        public string Name { get; set; }
    }
    public class Entity
    {
        public List<EntityAttribute> Attributes { get; set; }
        public string Name { get; set; }
    }
    public class Class1
    {
        public static string getTable()
        {
            return "tbl";
        }
    }
}

テキスト テンプレート ファイル .tt があります。

<#@ template debug="true" language="C#" #>
<#@ output extension=".cs" #>
<#@ assembly name="$(SolutionDir)\MvcApplication2\bin\MvcApplication2.dll" #>
<#@ import namespace="MvcApplication2" #>
<#
    string s = Class1.getTable();
#>

TextTemplate で CustomTool を実行すると、次のエラーが発生します。

Error   2   Compiling transformation: Metadata file 'MvcApplication2.dll' could not be found C:\Users\Igor\Documents\Visual Studio 2010\Projects\MvcApplication2\MvcApplication2\TextTemplate1.tt   1   1   MvcApplication2

" <#@ assembly name="MvcApplication2.dll" #> " をフルパス " <#@ assembly name="C:\Users\Igor\Documents\Visual Studio 2010\Projects\MvcApplication2\MvcApplication2\bin\ に変更するとMvcApplication2.dll" #> "

次のエラーが表示されます。

Error 2 Compiling transformation: 'MvcApplication2.Class1' does not contain a definition for 'getTable' c:\Users\Igor\Documents\Visual Studio 2010\Projects\MvcApplication2\MvcApplication2\TextTemplate1.tt 8 20

私の間違いはどこですか?? ありがとうございました

4

1 に答える 1

1

問題が見つかりました。

最初のエラーについて: tt ファイルを生成できなかった場合、これはエラーと見なされ、アプリケーションはコンパイルされません。それぞれ「MvcApplication2.dll」が存在しません。

解決策: tt ファイルのすべてにコメントを付けて、アプリケーションをビルドします。次に、tt ファイル内のすべてのコメントを外し、CustomTool を再度実行します。

2番目のエラーについて:前に述べたように、tt fieを生成できなかった場合、これはエラーと見なされ、アプリケーションはコンパイルされません。それぞれ、行ったすべての変更は保存されないため、一部のタイプ/メソッドができなかったと表示されます見つかりません(dllに存在しないだけです)

解決策:解決策の住居と同じように行う。

- -しかし - -

CustomTool の実行中にエラーが発生しなくても、ビルド中にエラーが発生します。これは、VisualStudio と T4 のいずれかが既に dll を使用している場合に dll を使用するためです。

解決策: T4Toolbox を使用して変更します

<#@ assembly name="$(SolutionDir)\MvcApplication2\bin\MvcApplication2.dll" #>

<#@ VolatileAssembly processor="T4Toolbox.VolatileAssemblyProcessor" name="$(SolutionDir)\MvcApplication2\bin\MvcApplication2.Dll" #>

こちらの GEORGE MATHEW のサイトで記事を読み、ツールボックスをダウンロードできます。

于 2011-01-18T11:52:29.757 に答える