一个进程/目录中的同一程序集dll的多个版本

时间:2018-11-14 12:24:13

标签: c# .net vb.net visual-studio dll

我正在尝试根据以下假设解决与dll库的部署相关的问题:

  1. 我有一个从dll-s加载插件的应用程序。
  2. 我团队的产品是Wix安装程序,应将其他插件安装到该应用程序。
  3. 我们正在使用从第2点开始的插件中引用的其他常见dll库(例如Common.Forms)。它们可能被 一个以上的插件。
  4. 插件A和B的发布之间可能会有差距,它们都可能引用了不同版本的公共库。
  5. 公用库可以引用基本应用程序的dll。基本应用程序的名称不严格。

问题:

如果我们尝试先安装插件A,然后再安装B,则公共库将被替换为never版本,这可能与插件A不兼容。结果,插件A将无法工作。

我已经尝试过的东西

  1. GAC-基于全局缓存的版本控制,问题:
  2. Fody costura-将公共库嵌入插件
    • 该原型可以正常工作,但是我们发现了两个问题:
      • 只有在基本应用程序未找到dll的情况下,Costura才能工作,因此,如果以前的插件安装了dll文件,并且该文件位于根目录中,则将加载该文件,而不是预期的嵌入式版本。可以通过从给定版本重命名库来避免冲突来解决。
      • 这将需要将Cody fostura添加到所有插件中,并且需要大量的手动操作才能完成安装。

我正在寻找一种替代方法来解决该问题,感谢您的帮助。

0 个答案:

没有答案