MEFを使用して拡張可能なアプリケーションを開発しています。アプリケーションには、さまざまな方法でデータを収集および処理するための多くの種類のプラグインがあります。
プラグインのバージョン管理されたオンラインリポジトリを構築することを考えています。これにより、ユーザーはプラグインが利用可能になったときに新しいバージョンをダウンロードできるようになります。
MEFが同じプラグインの異なるバージョンを同時にロードできるといいのですが、私が理解していることから、これは不可能です(間違っている場合は訂正してください)。
そのため、プラグインを更新して以前のバージョンをアーカイブする必要があるという事実に自分自身を辞任しました。
これを行うための最良の戦略は何でしょうか?
例1
アプリケーションは、ロードされた実行中のプラグインの新しいバージョンをダウンロードします。同じ名前のDLLがすでに存在するため、プラグインをプラグインディレクトリに配置できません。そのため、新しいプラグインの名前をバージョンサフィックスに変更できます。同じアセンブリをロードできないので、強制的に再起動する必要があると思います。したがって、再起動時に、古いプラグインを実現し、新しいプラグインをロードします。
---これは解決策が少し厄介なようです
例2
アプリケーションは、ロードされた実行中のプラグインの新しいバージョンをダウンロードします。プラグインは、ある種のインストーラーに含まれています。インストーラーはホストを正常に閉じ、既存のプラグインをアーカイブします。インストーラーは新しいプラグインをインストールし、ホストアプリを再起動します。
---これも少し厄介なようです
私は自分の仮定の修正、または自分の目標を達成するための成功した戦略への洞察を求めています。