另一个DLL中的系统名称空间

Rom*_*nok 3 .net c# sterling-db

这是我的问题:

我正在使用一个DLL库(不是来自.NET框架),它包含System带有TupleLazy类的命名空间.

当我尝试编译我的项目时,编译器会抛出一些错误,指出这些类存在于mscorlib.dll另一个DLL中.

那么,我如何使用.NET Framework中的类并且不删除对其他DLL的引用?

Mar*_*ell 7

如果它们具有相同的命名空间等,那么消除歧义的唯一方法是使用extern alias.在解决方案资源管理器中,Aliases将此恶意引用的属性更改为其他内容,例如foo(而不是global).

现在,在您需要该程序集中的类型的类文件中,您必须添加(在最顶层):

extern alias foo;
Run Code Online (Sandbox Code Playgroud)

然后在您可以使用的代码中:

foo::Some.Namespace.TheType
Run Code Online (Sandbox Code Playgroud)

或同等地:

foo.Some.Namespace.TheType
Run Code Online (Sandbox Code Playgroud)

基本上,别名会成为消除歧义的额外程度.默认别名,供参考,是global.还要注意,但是,当编译器是罚款与此相关,VS2012 IDE还有一些... 扭结extern alias:https://connect.microsoft.com/VisualStudio/feedback/details/770464/ide-but-not -compiler-不正确的报告-AN-错误使用-的extern别名到消除歧义类型时-


Jon*_*eet 5

这听起来像你正在使用的第三方库被设计用于.NET 2.0或.NET 3.5.

我会非常惊讶,如果第三方不提供了.NET的DLL 4+ -我强烈怀疑只需更换其中的那些为你的目标framework版本,并重新生成DLL.