RazorEngine を使用して、MVC のコンテキスト外のサービス レイヤーでテンプレートを実行しています。これらのアセンブリのクラスがビューでのみ使用されている場合、アセンブリが AppDomain に読み込まれないという問題があります。詳しく説明しましょう。
スタンドアロン アセンブリに埋め込まれたリソースである Razor テンプレートがいくつかあります (アセンブリ A と呼びましょう)。
テンプレートの 1 つ ( )は、別のアセンブリ (アセンブリ B と呼びましょう) に存在MyTemplate
するユーティリティ クラス ( ) を使用します。MyHelperClass
アセンブリ A には、アセンブリ B へのハード参照があります。
参照するテンプレートを解析しようとするとMyHelperClass
、「using ディレクティブまたはアセンブリ名前空間が不足していますか?」というおなじみのメッセージが表示されます。デバッグして Visual Studio のモジュール ウィンドウを見ると、アセンブリ B が AppDomain に読み込まれていないことがわかります。コードをデバッグし、失敗したコード行の前に中間ウィンドウを介してアセンブリをロードすると、機能します。
したがって、単にビューで使用されるだけでは、.NET フレームワークがアセンブリを AppDomain に読み込むには十分ではないようです。私はこれをテストしていませんが、これは標準の MVC プロジェクトにも当てはまると思います。
本当に2つの質問。
- ビュー内の参照は、ランタイムにアセンブリをロードさせるのに十分ではありませんか?
Assembly.Load
この状況で、ダミー クラスに頼ったり参照したりせずに、このアセンブリを強制的に読み込む最善の方法は何ですか。