私はMEFについて少し難問を抱えています。
MEF を使用して個々のインストーラー コンポーネントをロードするインストーラーおよび構成アプリケーション シェルがあります。これにより、エンド ユーザーは、インストール配布可能ファイルに配置されたコンポーネントから選択することができます。
これを使用するために作成された最初のインストール コンポーネントは、バージョン 11 の SQLServer SMO ライブラリを使用していました。2008R2 または 2012 に対してインストールすると正常に動作します。(これをコンポーネント A と呼びましょう)
別のチームがコードを新しいコンポーネントに移行していますが、そのコードはバージョン 10 の SQLServer SMO、RMO、および SSIS (DTS) ライブラリを使用しています。(これをコンポーネント B と呼びましょう)
MEF がコンポーネント BI を読み込もうとすると、SQLServer DLL の 1 つ (Microsoft.SqlServer.Replication) に対して LoaderExceptionFailure が発生します。実際には FileNotFoundException (DLL のリスト) が発生します。DLL は、コンポーネントのディレクトリに存在します。正しいバージョンは 10 です。
シェル アプリケーションには、既にバージョン 11 のファイルが含まれています。
アプリケーションコンテキストに何をすべきかを伝える方法はありますか? コンポーネントに必要な特定のライブラリをロードするように指示する方法はありますか?
各コンポーネントが「Associated.Library、Version=1.0.0.0、publickey=abcdef123456789、culture=none」を指定できると仮定したいと思います。