我有一个引用2个程序集A和B的项目。
A和B都声明具有相同全名的公共类型(例如Foo.Bar)。
当我构建时,似乎编译器选择一种类型来引用,然后抛出警告。有什么方法可以明确我想要使用哪种实现(例如,汇编A中的Foo.Bar)?
答案 0 :(得分:4)
您必须使用extern alias
。您必须使用/ r开关为每个dll编译代码。
csc /r:AssemblyA=A.dll /r:AssemblyB=B.dll [myProject]
或者您可以通过在项目的References
文件夹中选择它来设置程序集的别名,并使用Aliases
设置其properties window
属性。
然后在.cs
文件中使用extern alias
明确选择您要使用的类型:
extern alias AssemblyA;
extern alias AssemblyB;
public class Test
{
public void TestMethod()
{
var aFooBar = new AssemblyA.Foo.Bar();
var bFooBar = new AssemblyB.Foo.Bar();
}
}
更多信息here。
答案 1 :(得分:-1)
您可以参考包括装配的完整方法名称,
像A.Foo.Bar或B.Foo.Bar
希望这能帮到你......
答案 2 :(得分:-2)
你是否已经像这样引用了FooBar类:A.FooBar或B.FooBar?
因为如果你想同时使用两个程序集,你可以明确指定你想用哪个程序集来调用FooBar,就像我提到的那样。
如果您也不想使用全名,万一它太长,您可以在使用声明中创建别名