Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用同一库的两个不同版本_C#_.net_Ilmerge - Fatal编程技术网

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

C# 使用同一库的两个不同版本,c#,.net,ilmerge,C#,.net,Ilmerge,我正在开发一个小型库,它将在多个应用程序中使用。我想在我自己的库中使用一些第三方库(例如log4Net、entityframework等)。我可以想象我可以在自己的库旁边部署DLL,或者使用ILMerge创建一个DLL(我对ILMerge知之甚少,但从未尝试过) 我关心的是,如果使用我的库的应用程序也使用我将使用的第三方库,将会发生什么。例如,如果我使用log4Net版本1.2,而一个消费应用程序使用log4Net版本1.0,我会得到某种类型的冲突,还是只有一个版本的程序集不会加载 ILMerg

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

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


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

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

您可以使用:

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


这是一个。

我以前遇到过这种情况——这是一个典型的大型企业创造的怪物,有大量的项目。有一次,有人添加了一个项目,该项目需要一个更新版本的log4Net,它破坏了一切。当时的解决方案(谢天谢地,我没有参与其中)是根据需要更改代码,以便所有项目都引用同一个更新版本的log4Net。除了“在GAC中安装并参考您的特定版本”之外,我希望看到一个解决此类问题的好方法。Hans,您能澄清一下您的评论吗?我不知道我的问题在哪里暗示了一个系统不需要维护,或者一个项目曾经完成过。@HansPassant我也很困惑-你是不是打算写下对另一个问题的回答?这似乎与这个问题格格不入。几年前,这对我的团队来说是非常有用的。