我有一个引用 2 个程序集 A 和 B 的项目。
A 和 B 都声明了一个具有相同全名的公共类型(例如 Foo.Bar)。
当我构建时,编译器似乎选择一种类型进行引用,然后抛出警告。有什么方法可以明确我想使用哪个实现(例如来自程序集 A 的 Foo.Bar)?
你必须使用extern alias. 您必须为每个 dll 使用 /r 开关编译代码。
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();
}
}
Run Code Online (Sandbox Code Playgroud)
更多信息在这里。