Advertencia del compilador (nivel 2) CS1701

Actualización: noviembre 2007

Mensaje de error

Suponiendo que la referencia de ensamblado "Nombre del ensamblado 1" coincide con "Nombre del ensamblado 2", puede que necesite proporcionar la directiva en tiempo de ejecución
Assuming assembly reference "Assembly Name #1" matches "Assembly Name #2", you may need to supply runtime policy

Los dos ensamblados difieren en el número de lanzamiento o de versión. Para poder unificarlos, debe especificar las directivas en el archivo .config de la aplicación y proporcionar el nombre seguro correcto de un ensamblado, como se muestra en el código del siguiente ejemplo.

Ejemplo

El siguiente ejemplo de varios archivos hace referencia a un ensamblado utilizando dos alias externos diferentes. Este primer ejemplo genera la versión anterior del código que crea el ensamblado 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 {}

Éste es el código que crea la versión más reciente del ensamblado CS1701_d. Observe que se compila en un directorio diferente que la versión antigua. Esto es necesario porque los archivos de resultados tienen los mismos nombres.

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

Este ejemplo prepara los alias externos A1 y 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(); }
}

Este ejemplo llama a los métodos utilizando dos alias diferentes de A. que El ejemplo siguiente genera 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();
   }
}