【发布时间】:2013-06-07 22:01:53
【问题描述】:
我正在开发一个将在多个应用程序中使用的小型库。我想在我自己的库中使用一些第三方库(例如 log4Net、Entity Framework 等)。我想我可以将 DLL 与我自己的库一起部署,或者使用 ILMerge 创建单个 DLL(我对 ILMerge 知之甚少,从未尝试过)。
我担心如果使用我的库的应用程序也使用我将使用的相同第三方库会发生什么。例如,如果我使用 log4Net 1.2 版,而消费应用程序使用 log4Net 1.0 版,我会遇到某种冲突,还是只会加载一个版本的程序集?
ILMerge 会阻止这种情况吗?在开发具有第三方依赖项的库时,通常如何解决此问题?
【问题讨论】:
-
我以前也遇到过这种情况——这是一个典型的大公司用大量项目创造的怪物。有一次,有人添加了一个项目,它需要一个更新版本的 log4Net,它破坏了一切。当时的解决方案(幸好我没有参与)是根据需要更改代码,以便能够让所有项目都引用相同的较新版本的 log4Net。除了“将其安装在 GAC 中并参考您的特定版本”之外,我希望看到针对此类问题的良好解决方案。
-
汉斯,你能澄清一下你的评论吗?我不知道我的问题在哪里暗示系统不需要维护,或者项目已经完成。
-
@HansPassant 我也很困惑——你是否打算写下对另一个问题的回复?这个问题似乎不合适。