独自のサブディレクトリでプラグインアセンブリを処理する場合、サブディレクトリからそれぞれの依存関係を読み込もうとすると、これらのアセンブリを読み込めないというよく知られた問題があります。解決策は、初期化時にオブジェクトにPrivateBinPath
設定されたプラグインをAppDomainsにロードすることです。AppDomainSetup
ただし、これにより、特にプラグインがGUIを提供することになっている場合は、マーシャリング/AppDomain間の通信に関して他の問題が発生します。
セキュリティの側面の優先度が低い場合(重要ではないユーティリティアプリケーション、プラグインの障害によるクラッシュ時に深刻な問題は発生しない)、次のような考えがあります。アプリケーションの起動時に、すべてのプラグインディレクトリを検索し、新しいbinパスにこれらのディレクトリを持つAppDomainを作成する必要があります。次に、アプリケーション全体とそのGUIが、すべてのプラグインとともにその新しいAppDomainで実行されます。
与えられた状況下で、その解決策を避ける理由はありますか?それとも、その解決策が実行可能でさえない理由は何かありますか?