Buu*_*yen 12 .net c# msbuild namespaces assembly-resolution
出于好奇,我创建了两个程序集,它们都有一个Class1
具有完全相同名称空间(Library1
)的class ().然后我创建另一个引用这两个程序集的客户端,并尝试创建一个实例Class1
.
毫不奇怪,编译器给出了关于模糊引用的编译错误.有没有办法明确指定我想要使用的程序集中的类型以避免歧义?
注意:我很少知道,如果有的话,在实践中发生.这只是一个关于语言特征的好奇心的问题.
CMS*_*CMS 10
我认为您应该使用extern别名将程序集名称空间包装在Global名称空间之外.这是如何做:
在引用2个组件的项目,选择参考下的其中之一,并在属性窗口中更改别名值从global
,比方说,global, Library1a
.
对另一个引用做同样的事情,但给它一个不同的别名 - 让我们继续global, Library1b
我们的例子.
插入extern alias Library1a;
和/或extern alias Library1b;
作为使用程序集的任何类的前2行.
访问不明确的成员时,使用Library1a.
或限定命名空间Library1b.
.例子:Library1a.Library1.Class1...
Library1b.Library1.Class1...