使用同一个库的两个不同版本

时间:2013-06-07 22:01:54

标签: c# .net ilmerge

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

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

ILMerge会阻止这种情况吗?在开发具有第三方依赖关系的库时,这通常如何解决?

2 个答案:

答案 0 :(得分:3)

您可以使用extern alias

  

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

这是Extern alias walkthrough

答案 1 :(得分:0)

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