我正在使用 MEF 开发一个可扩展的应用程序。该应用程序将有许多类型的插件来以不同的方式收集和处理数据。
我正在考虑为插件构建一个版本化的在线存储库,这将使用户能够在插件的新版本可用时下载它们。
如果 MEF 可以同时加载同一插件的不同版本,那就太好了,尽管据我了解这是不可能的(如果我错了,请纠正我)。
所以我已经接受了我需要更新插件并存档以前版本的事实。
这样做的最佳策略是什么?
示例 1
应用程序下载已加载的运行插件的新版本。我不能将插件放在插件目录中,因为已经有同名的 DLL。所以我可以用版本后缀重命名新插件。我无法加载相同的程序集,所以我想我将不得不强制重新启动。所以在重新启动时,它会实现旧插件并加载新插件。
--- 这似乎解决方案似乎有点混乱
示例 2
应用程序下载已加载的运行插件的新版本。该插件包含在某种类型的安装程序中。安装程序会优雅地关闭主机并归档现有插件。安装程序安装新插件并重新启动主机应用程序。
--- 这也显得有些凌乱
我正在寻求对我的假设的任何修正,或对实现我目标的成功策略的任何见解。