使用具有相同名称空间的两个.NET库

我目前正在为公司维护一些旧代码。 正如它会发生的那样,我正在修改的当前应用程序使用旧版本的内部库(我们称之为Lib1.dll)。 他们还有一个名为Lib2.dll的新版本库,它以多种方式改进了以前的库。

不幸的是,Lib2并不向后兼容Lib1。 更糟糕的是,它们都使用相同的命名空间Product.Common。

如何在同一个项目中使用Lib2和Lib1? 现在,如果我添加对它们的引用,VS告诉我某些类是不明确的(这是有道理的,因为它们使用相同的命名空间)。

基本上,我需要这样的东西:

Imports Lib1:Product.Common.Class 

我正在使用VB.NET 1.1。

我发现一个博客条目在C#中有一个解决方案,不确定VB.NET中的解决方案。

Extern别名演练和C#2.0:在一个应用程序中使用相同dll的不同版本


编辑:

看起来你运气不好。 似乎没有.NET 1.1的解决方案。

您可以添加另一个项目来“托管”您的一个Lib项目。 基本上只需添加一个图层来将命名空间嵌套到更深的层次,这样它就不会再引起冲突。

如果Lib2.dll比Lib1.dll改进了,为什么还需要Lib1.dll? 最好的办法是从项目中删除Lib1.dll,只使用Lib2.dll。

如果没有,请尝试此链接,看看是否有帮助

http://blogs.msdn.com/ansonh/archive/2006/09/27/774692.aspx

我认为乔尔的答案可能是最简单的方法。 但另一个更极端的选择是通过ildasm运行程序,在命名空间上执行搜索替换,并通过ilasm运行结果。

您可以使用此方法遇到其他问题,例如签名,但它允许您“重命名”程序集中的命名空间。