ilmerge解决了.NET DLL版本依赖关系吗?
我经常听说ilmerge解决了.NET DLL版本依赖关系吗?,.net,dll,dependency-management,ilmerge,.net,Dll,Dependency Management,Ilmerge,我经常听说ilmerge被用作将一组DLL合并到单个可执行文件中的一种方法,以帮助桌面应用程序的分发 使用它作为在类库中强制执行依赖链的一种方法是否可行 例如,假设我有三个组件: * dllA * dllB * dllC 其依赖链是: * dllA -> dllC * dllA -> dllB * dllB -> dllC 现在,如果dllC被修订为新版本v1到v2,那么dllA是否可能被强制使用dllC\u v1,而dllB则被强制使用dllC\u v2 * dllA -
ilmerge
被用作将一组DLL合并到单个可执行文件中的一种方法,以帮助桌面应用程序的分发
使用它作为在类库中强制执行依赖链的一种方法是否可行
例如,假设我有三个组件:
* dllA
* dllB
* dllC
其依赖链是:
* dllA -> dllC
* dllA -> dllB
* dllB -> dllC
现在,如果dllC
被修订为新版本v1
到v2
,那么dllA
是否可能被强制使用dllC\u v1
,而dllB
则被强制使用dllC\u v2
* dllA -> dllC_v1
(dllC_v1 is ilmerged into dllA)
* dllA -> dllB -> dllC_v2
(dllC_v2 is ilmerged into dllB)
另外,版本控制配置在这个场景中是如何工作的?如果
dllC
依赖于要在web/app.config
中定义的配置节,并且dllC\u v1
和dllC\u v2
之间对配置模式/键的期望不同,那么会发生什么?不,dllC根本不存在。这就好像您创建了一个合并了三个原始项目的所有源代码的项目。@HansPassant但是如果我使用/internalize
?我能不能把dllC\u v1
内化为dllA
和dllC\u v2
内化为dllB
?我发现这样做的一种方法是根据两个DLL的版本命名:dllC\u v1
和dllC\u v2
,然后分别从dllA
和dllB
?使用不同名称的诀窍是,当它们复制到/bin
文件夹时,它们不会相互冲突或覆盖(GAC中不存在此问题,它支持并排版本)。此链接:建议另一种选择,即添加dll引用作为嵌入资源?相关: