更新:2007 年 11 月

错误消息

假定程序集引用“Assembly Name #1”与“Assembly Name #2”匹配,您可能需要提供运行时策略

这两个程序集在发行号和/或版本号上有差异。为保证一致,必须在应用程序的 .config 文件中指定指令,并提供程序集的正确强名称,如以下代码示例所示。

示例

下面的多文件示例使用两个不同的外部别名引用一个程序集。第一个示例生成用于创建程序集 CS1701_d 的代码的较早版本。

 复制代码
// CS1701_a.cs
// compile with: /target:library /out:cs1701_d.dll /keyfile:mykey.snk
using System.Reflection;
[assembly:AssemblyVersion("1.0")]
public class A {
   public void M1() {}
}

public class C1 {}

这是创建较新版本的程序集 CS1701_d 的代码。注意,由于这两个版本的输出文件同名,需要将较新版本编译到不同于较早版本的目录中。

 复制代码
// CS1701_b.cs
// compile with: /target:library /out:c:\\cs1701_d.dll /keyfile:mykey.snk
using System.Reflection;
[assembly:AssemblyVersion("2.0")]
public class A {
   public void M2() {}
   public void M1() {}
}

public class C2 {}
public class C1 {}

此示例设置外部别名 A1 和 A2。

 复制代码
// CS1701_c.cs
// compile with: /target:library /reference:A2=c:\\cs1701_d.dll /reference:A1=cs1701_d.dll

extern alias A1;
extern alias A2;
// using System;
using a1 = A1::A;
using a2 = A2::A;

public class Ref {
   public static a1 A1() { return new a1(); }
   public static a2 A2() { return new a2(); }

   public static A1::C1 M1() { return new A1::C1(); }
   public static A2::C2 M2() { return new A2::C2(); }
}

此示例使用 A 的两个不同别名调用方法。下面的示例生成 CS1701。

 复制代码
// CS1701_d.cs
// compile with: /reference:c:\\CS1701_d.dll /reference:CS1701_c.dll
// CS1701 expected
class Tester {
   public static void Main() {
      Ref.A1().M1();
      Ref.A2().M2();
   }
}