5

我正在开发一个将在多个应用程序中使用的小型库。我想在我自己的库中使用一些第三方库(例如 log4Net、Entity Framework 等)。我想我可以将 DLL 与我自己的库一起部署,或者使用 ILMerge 创建单个 DLL(我对 ILMerge 知之甚少,从未尝试过)。

我担心如果使用我的库的应用程序也使用我将使用的相同第三方库会发生什么。例如,如果我使用 log4Net 1.2 版,而消费应用程序使用 log4Net 1.0 版,我会遇到某种冲突,还是只会加载一个版本的程序集?

ILMerge 会阻止这种情况吗?在开发具有 3rd 方依赖项的库时,通常如何解决这个问题?

4

2 回答 2

3

您可以使用外部别名

您可能必须引用具有相同完全限定类型名称的程序集的两个版本。例如,您可能必须在同一个应用程序中使用两个或多个版本的程序集。通过使用外部程序集别名,每个程序集的命名空间可以包装在由别名命名的根级命名空间中,这使它们能够在同一个文件中使用。

这是一个外部别名演练

于 2013-06-07T22:41:12.377 回答
0

最好的方法是与您的应用程序一起部署。NuGet 很好地管理了这些依赖项。除非您有特定的理由使用 ILMerge,否则它只会让您的生活更加艰难——例如,您可能想要升级。

于 2013-06-07T22:16:43.233 回答