8

T4MVC テンプレートをプロジェクトに追加しようとしていますが、いくつかの問題が発生しています。Codeplex にアクセスして T4MVCの最新バージョンをダウンロードし、指示に従って 2 つのファイルT4MVC.ttT4MVC.Settings.t4Web アプリケーションのルートにコピーしました。

すぐに、次のエラーが発生しました。

T4MVC.cs(生成されたファイル)から:

名前空間には、フィールドやメソッドなどのメンバーを直接含めることはできません

From T4MVC.tt(コード生成テンプレート):

変換のコンパイル: 型または名前空間の名前 'ITextTemplatingEngineHost' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)

を開くT4MVC.csと、次の 1 行しか含まれていません。

ErrorGeneratingCode

もう一度ビルドすることを提案するこの投稿を見つけましたが、その解決策は私の問題を解決しません-実際、それは物事を変えません. 私は何をすべきか?

4

3 に答える 3

18

わかりました。問題は、T4MVC パッケージの最後のリリース以降、明らかに Microsoft がITextTemplateHostインターフェイスの場所を変更したため、別の名前空間をインポートする必要があったことです。また、.dllこれらの名前空間を持つファイルは、既定の ASP.NET MVC テンプレート プロジェクトにインポートされません。これを機能させるために私がしたことは次のとおりです。

  1. 次の .dll ファイルへの参照を追加します (私のマシンの検索パスは角かっこで囲まれています)。

    • Microsoft.VisualStudio.TextTemplating.10.0.dll ( C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.VisualStudio.TextTemplating.10.0\v4.0_10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.10.0.dll )

    • Microsoft.VisualStudio.TextTemplating.Interfaces.10.0.dll ( C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.VisualStudio.TextTemplating.Interfaces.10.0\v4.0_10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.TextTemplating.Interfaces .10.0.dll )

  2. 次の名前空間が両方ともインポートされていることを確認してくださいT4MVC.tt(ファイルに既にある構文に従ってください)。

    • Microsoft.VisualStudio.TextTemplating

    • Microsoft.VisualStudio.TextTemplating.Interfaces

  3. 生成されたすべてのコード ファイルを削除します (T4MVC.ttソリューション エクスプローラーで展開すると表示されます)。

  4. プロジェクトをビルドします。ファイルが生成されない場合は、開いT4MVC.ttて何かを編集し、保存してビルドしないでください。それはそれを行う必要があります!

于 2009-12-15T10:22:30.207 に答える
3

補遺 - ASP.NET MVC 3 RTM

この問題の補足として、ASP.NET MVC 3 RTM をインストールしたばかりの場合、MVC 3 リリース候補の 1 つを使用して作成されたプロジェクトで同様の問題が発生する可能性があります。

解決するには:

NuGet を使用して T4MVC.2.6.40 以降がインストールされていることを確認してください。

つまり、Tools >> Library Package Manage を使用して T4MVC を再インストールします。コンソールで、次のように入力します。

uninstall-package t4mvc 

その後:

install-package t4mvc 

最新バージョンを取得します。

T4MVC.ttファイルで次のエラーが発生する可能性があります。

A namespace cannot directly contain members such as fields or methods

ファイルを開き、汚れた状態にして (たとえば、波線のあるコメントを削除して)、保存せずに閉じます!!! David Ebbo の回答、t4mvc.tt NEEDS to be dirty を参照してください。

再コンパイルして、人生を始めましょう。

于 2011-01-14T15:45:48.113 に答える
2

うまくいったようですが、ここでいくつかの点を追加させてください。

Microsoft.VisualStudio.TextTemplating.Interfaces をインポートする必要があることについて、T4MVC.tt の先頭にコメントを追加しました。しかし、ええ、それは見逃しやすいです。

紛らわしい部分について説明します。これらのインターフェイスは Beta2 で実際に別の名前空間に移動しましたが、T4 チームは心変わりし、混乱を避けるためにそれらを元の名前空間に戻すことにしました。したがって、次の RC ビルドが公開されると、この名前空間はなくなります。

DLL をインポートする必要性については、それがなくても機能するので、これが必要であることに驚きました。

最後の注意: ステップ #4 で、ここで保存しても問題はありません。何が起こるかというと、T4MVC にはそれ自体をダーティーに保つロジックがあるため、保存しても未保存としてマークされていることがわかります (これは設定ファイルでオフにすることができます)。

お役に立てれば!

于 2009-12-19T19:34:21.333 に答える