我正在尝试根据以下假设解决与dll库的部署相关的问题:
- 我有一个从dll-s加载插件的应用程序。
- 我团队的产品是Wix安装程序,应将其他插件安装到该应用程序。
- 我们正在使用从第2点开始的插件中引用的其他常见dll库(例如Common.Forms)。它们可能被
一个以上的插件。
- 插件A和B的发布之间可能会有差距,它们都可能引用了不同版本的公共库。
- 公用库可以引用基本应用程序的dll。基本应用程序的名称不严格。
问题:
如果我们尝试先安装插件A,然后再安装B,则公共库将被替换为never版本,这可能与插件A不兼容。结果,插件A将无法工作。
我已经尝试过的东西
- GAC-基于全局缓存的版本控制,问题:
- Fody costura-将公共库嵌入插件
- 该原型可以正常工作,但是我们发现了两个问题:
- 只有在基本应用程序未找到dll的情况下,Costura才能工作,因此,如果以前的插件安装了dll文件,并且该文件位于根目录中,则将加载该文件,而不是预期的嵌入式版本。可以通过从给定版本重命名库来避免冲突来解决。
- 这将需要将Cody fostura添加到所有插件中,并且需要大量的手动操作才能完成安装。
我正在寻找一种替代方法来解决该问题,感谢您的帮助。