このサイトのアドバイスに基づいて、ASP MVCアプリケーション用のプラグインソリューションを作成しましたが、ロードブロッキングに達しました。プラグインシステムがどのように機能するかに関わらず、コントローラーを正常にロードして適切なビューを見つける - 問題は、プラグインのすべての参照を解決できないためにビューがコンパイルされないという問題です(プラグインDLLは、ホストアプリケーションが知らないDLL)。ASP MVCページコンパイルエンジンへの参照の追加
CurrentDomainでAssemblyResolveを使用していますが、デフォルトのBuildManagerがビューをコンパイルするときに呼び出されるのではなく、web.configセクションからアセンブリのリストを取得します。すべてのプラグインファイルをGACに追加し、そのセクションに参照を追加するとうまくいきます。しかし、プラグインごとにweb.configを変更する必要がある場合は、プラグインシステムを導入するという目的を破ることになります。
少しイラストの問題を説明する: Plugin.dll --references - > PluginServices.dll
URL http://mysite.com/some/index MVCアプリケーション--load - > Plugin.dll PASS
MVCアプリケーションを--load - > Plugin.SomeController PASS
MVCアプリケーション--find - >プラグイン\ビュー\一部\ Index.aspx PASS
MVCアプリケーション--compile - > Index.aspx FAIL(目eビューは見つからないPluginServicesのタイプを使用します)
Web.configを変更せずにコンパイルが成功するように、BuildManagerへの参照を動的に追加する方法はありますか?
ありがとうございます!
それはかなりクールなアイデアのように聞こえる。あなたはどうしてそれが気に入らないのですか? –
唯一の理由は、GACのファイルを更新し続ける必要があるため、少し面倒です。それ以外は、うまくいくようです。 – Gil