这是我的问题:
我使用的DLL库(不是来自.NET框架)包含System
名称空间,包含Tuple
和Lazy
类。
当我尝试编译项目时,编译器会抛出一些错误,指出这些类存在于mscorlib.dll
和另一个DLL中。
那么,我如何使用.NET Framework中的类并且不删除对其他DLL的引用?
答案 0 :(得分:7)
如果它们具有相同的命名空间等,那么消除歧义的唯一方法是使用extern alias
。在解决方案资源管理器中,将此恶意引用的Aliases
属性更改为其他内容,例如foo
(而不是global
)。
现在,在您需要该程序集中的类型的类文件中,您必须添加(在最顶层):
extern alias foo;
然后在您可以使用的代码中输入:
foo::Some.Namespace.TheType
或同等地:
foo.Some.Namespace.TheType
基本上,别名是一种额外的消歧程度。作为参考的默认别名是global
。但是请注意,虽然编译器对此很好,但VS2012 IDE仍然有一些...... 扭结与extern alias
:{{3} }
答案 1 :(得分:5)
听起来您正在使用的第三方库旨在用于.NET 2.0或.NET 3.5。
如果第三方还为.NET 4+提供DLL,我会非常惊讶 - 我强烈怀疑你可以只替换那些针对你的目标框架版本的DLL重建。
答案 2 :(得分:3)