Freigeben über


Compilerwarnung (Stufe 2) CS1701

Aktualisiert: November 2007

Fehlermeldung

Es wird angenommen, dass der Assemblyverweis "Assemblyname1" mit "Assemblyname2" übereinstimmt. Möglicherweise müssen Sie eine Laufzeitrichtlinie bereitstellen.
Assuming assembly reference "Assembly Name #1" matches "Assembly Name #2", you may need to supply runtime policy

Die zwei Assemblys unterscheiden sich in Release- und/oder Versionsnummer. Für den Fall der Zusammenführung müssen Sie Direktiven in der Konfigurationsdatei der Anwendung angeben. Außerdem müssen Sie den richtigen starken Namen einer Assembly angeben, wie im folgenden Beispielcode veranschaulicht.

Beispiel

Im folgenden Beispiel mit mehreren Dateien wird mithilfe zweier verschiedener externer Aliase auf eine Assembly verwiesen. In diesem ersten Beispiel wird die frühere Codeversion erstellt, mit der Assembly CS1701_d erstellt wird.

// 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 {}

Dies ist der Code, mit dem die neuere Version von Assembly CS1701_d erstellt wird. Beachten Sie, dass sich das Kompilierergebnis in einem anderen Verzeichnis als die ältere Version befindet, weil die Ausgabedateien dieselben Namen aufweisen.

// 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 {}

In diesem Beispiel werden die externen Aliase A1 und A2 eingerichtet.

// 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(); }
}

In diesem Beispiel werden Methoden mithilfe von zwei verschiedenen Aliasen von A aufgerufen. Im folgenden Beispiel wird C1701 generiert.

// 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();
   }
}