c# - .NET (C#) 应用程序插件的依赖 hell

标签 c# .net winforms plugins dependency-management

我目前正在为第 3 方 WindowsForms 应用程序开发一个插件,它将与其他插件共存。请注意,我无法控制基础应用程序使用的源或文件(是 dll 文件、配置文件等),也无法控制可能在运行时加载的其他插件。

让我们想象一下,当其他插件之一在我的之前加载时,加载了对库 A(“A.dll”)的 1.0 版的依赖项。如果我的插件尝试加载库 A(也称为“A.dll”)的 2.0 版,我会立即收到经典的“System.IO.FileLoadException”。

在深入了解依赖 hell 这个主题之后,我看到了几个选项(比如 herehere )。然而,所有这些选项似乎都集中在独立应用程序上,开发人员通常可以完全控制这些应用程序,这些应用程序需要加载同一库的两个版本(可能是为了遗留支持或任何其他奇怪的原因)。由于插件环境,这些解决方案似乎不适用于我的情况。此外,他们通常需要:

  • 在 GAC 中插入一个程序集,AFAIK 需要最终用户机器上的管理权限,而我没有;
  • 控制我没有的基本应用程序的配置文件 (*.exe.config)。

谁能帮我想出一种方法来使用新版本的库,该库也被另一个插件用作旧版本,请记住我描述的限制

最佳答案

如果您自己提供库 A.dll 版本 2.0,您可以将其重命名为 A.2.0.dll 并引用它。

关于c# - .NET (C#) 应用程序插件的依赖 hell ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58412129/

相关文章:

c# - 有没有办法在设计器中使用自定义控件并避免 GAC?

c# - 如何将 mysql 查询转换为可接受的 c# 字符串?

c# - 我们如何轻松找到代码中的哪一行导致运行时异常?

c# - 使用 Sharpbox API 上传到 Dropbox

c# - 如何使用 HttpClient 根据个人请求设置 HttpHeader

c# - 在创建具有安装屏蔽限制的应用程序时,有没有办法通过 Smartscreen 过滤器?

c# - 将webservice的Json格式Response转换

vb.net - 如何增加 DataGridView 列标题工具提示的显示时间?

.net - 组合框中每个项目的工具提示

c# - Awesomium.NET 在调整大小时崩溃 - 内存泄漏