我正在使用MEF开发一个可扩展的应用程序。该应用程序将有多种类型的插件,用于以不同的方式收集和处理数据。
我考虑构建一个版本化的在线插件库,使用户能够在插件有新版本时下载新版插件。
尽管从我了解到的情况来看这似乎不可能(如果我错了请纠正我),但如果MEF可以同时加载相同插件的不同版本会很好。
所以我已经接受了这个事实:我需要更新插件并归档先前的版本。
那么,做到这一点的最佳策略是什么?
示例1
应用程序下载了正在运行的插件的新版本。由于已经有一个具有相同名称的DLL文件,因此无法将新插件放置在插件目录中。因此,我可以使用版本后缀重命名新插件。我不能加载同一程序集,因此我猜我必须强制重新启动。因此,在重新启动后,它将删除旧插件并加载新插件。
--- 这个解决方案似乎有点混乱。
示例2
应用程序下载了正在运行的插件的新版本。插件被包含在某种类型的安装程序中。安装程序会正常关闭主机并归档现有插件。安装程序然后安装新插件并重新启动主机应用程序。
--- 这也似乎有点混乱。
我正在寻求对我的假设的任何更正,或针对实现我的目标的成功策略的任何见解。
我考虑构建一个版本化的在线插件库,使用户能够在插件有新版本时下载新版插件。
尽管从我了解到的情况来看这似乎不可能(如果我错了请纠正我),但如果MEF可以同时加载相同插件的不同版本会很好。
所以我已经接受了这个事实:我需要更新插件并归档先前的版本。
那么,做到这一点的最佳策略是什么?
示例1
应用程序下载了正在运行的插件的新版本。由于已经有一个具有相同名称的DLL文件,因此无法将新插件放置在插件目录中。因此,我可以使用版本后缀重命名新插件。我不能加载同一程序集,因此我猜我必须强制重新启动。因此,在重新启动后,它将删除旧插件并加载新插件。
--- 这个解决方案似乎有点混乱。
示例2
应用程序下载了正在运行的插件的新版本。插件被包含在某种类型的安装程序中。安装程序会正常关闭主机并归档现有插件。安装程序然后安装新插件并重新启动主机应用程序。
--- 这也似乎有点混乱。
我正在寻求对我的假设的任何更正,或针对实现我的目标的成功策略的任何见解。