我目前正在为一个第三方WindowsForms应用程序编写插件,该插件将与其他插件并存。请注意,我无法控制基础应用程序使用的源代码或文件(如dll文件、配置文件等)或在运行时加载的其他插件。
让我们假设其中一个其他插件在我的插件之前加载,它会加载版本1.0的库A(“A.dll”)。如果我的插件尝试加载版本2.0的库A(也称为“A.dll”),我会立即收到经典的“System.IO.FileLoadException”错误。
在深入了解依赖关系问题之后,我找到了一些选择(例如这里或这里)。然而,所有这些选项似乎都集中于独立应用程序,开发人员通常对其拥有完全控制权,需要同时加载两个版本的相同库(可能是为了旧版支持或任何其他奇怪的原因)。由于插件环境的限制,这些解决方案似乎不适用于我的情况。此外,它们经常需要:
- 向GAC插入程序集,我不知道是否需要最终用户计算机上的管理权限,而我没有这些权限;
- 控制基础应用程序的配置文件(*.exe.config),我没有这个权限。
请考虑到我所描述的限制,有人可以帮我找到一种使用新版本库的方法吗,该库也被另一个插件作为旧版本使用?