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引用作为嵌入资源?相关: