MEFを使用して拡張アセンブリを動的にロードするアプリケーションがあります。1つのアセンブリはドメインレイヤーで、2つ目はビューです。ドメインアセンブリが読み込まれ、期待どおりに機能します。疑似構造は次のようになります。
- 解決
- ドメインプロジェクト
- プロジェクトを見る
私が抱えている問題は、ビューアセンブリに、最初のアセンブリのドメインオブジェクトのビジュアルプロキシである1..Nユーザーコントロールが含まれていることです。これにより、ドメインレイヤーアセンブリに依存するという点で、ビューアセンブリに制約が課せられます。たとえば、上から見ると、ViewProjectアセンブリはDomainProjectアセンブリに依存しています。ビュープロジェクトからドメインプロジェクトにビジュアルプロキシを移動することで問題は解決すると思いますが、関心の分離に反することになります。
ビューアセンブリでAssembly.LoadFile()メソッドを呼び出すと、一般的なFileNotFoundExceptionが発生します。これは、ロードされたドメインレイヤーアセンブリが最初にアプリケーションが実行されているルートの外にあり、したがってプローブパス内にないためだと思います。このプロセスで私が望んでいたのは、コアアセンブリがすでにロードされているため、ビューアセンブリの依存関係が満たされていることです。残念ながら、そうではありませんでした。
AppDomainSetup.PrivateBinPathは私にとってオプションではありません。これにより、拡張機能の開発者は、アプリケーションがインストールされているファイル構造内にインストールする必要があり、汚染につながる可能性があります。これは、私たちが必要または望んでいることではありません。Extensionsこのタスクが、インストールされたアプリケーションルートの下に単一のディレクトリを持つことでどれほど簡単になるかを私は知っています。
私がやりたいのは、アセンブリをロードし、それらの依存関係を、すでにロードされてAggregateCatalogに追加されている他のアセンブリと一致させることです。
私の目標を達成するのに役立つ考え、提案、アドバイスはありますか?