Partager via


Avertissement du compilateur (niveau 2) CS1701

Mise à jour : novembre 2007

Message d'erreur

En supposant que la référence de l'assembly 'NomAssembly1' corresponde à 'NomAssembly2', il se peut que vous deviez fournir une stratégie runtime
Assuming assembly reference "Assembly Name #1" matches "Assembly Name #2", you may need to supply runtime policy

Les deux assemblys diffèrent du point de vue de la version finale et/ou du numéro de version. Pour qu'une unification puisse avoir lieu, vous devez spécifier des directives dans le fichier .config de l'application et vous devez fournir le nom fort correct d'un assembly, comme l'illustre l'exemple de code suivant.

Exemple

L'exemple multifichier suivant référence un assembly à l'aide de deux alias externes différents. Le premier exemple génère la version la plus ancienne du code qui crée l'assembly 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 {}

C'est le code qui crée la version la plus récente de l'assembly CS1701_d. Notez qu'il compile dans un répertoire différent de celui de la version antérieure, ce qui est nécessaire puisque les fichiers de sortie portent les mêmes noms.

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

Cet exemple installe les alias externes A1 et 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(); }
}

Cet exemple appelle des méthodes à l'aide de deux alias différents d'A. L'exemple suivant génère l'erreur C1701.

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