Leer en inglés

Compartir a través de


Advertencia del compilador (nivel 1) CS1684

La referencia al tipo 'Nombre de tipo' indica que está definida en 'Espacio de nombres', pero no se pudo encontrar

Este error puede deberse a la existencia de una referencia dentro de un espacio de nombres que hace referencia a un tipo que dice existir dentro de un segundo espacio de nombres, pero no es así. Por ejemplo, mydll.dll indica que el tipo A existe dentro de yourdll.dll, pero no es así. Una posible causa de este error es que la versión de yourdll.dll que se usa es demasiado antigua y no se ha definido A .

El ejemplo siguiente genera la advertencia CS1684.

Ejemplo 1

// CS1684_a.cs  
// compile with: /target:library /keyfile:CS1684.key  
public class A {  
   public void Test() {}  
}  
  
public class C2 {}  

Ejemplo 2

// CS1684_b.cs  
// compile with: /target:library /r:cs1684_a.dll  
// post-build command: del /f CS1684_a.dll  
using System;  
public class Ref
{  
   public static A GetA() { return new A(); }  
   public static C2 GetC() { return new C2(); }  
}  

Ejemplo 3

Volvemos a generar ahora el primer ensamblado, omitiendo la definición de la clase C2 para que no se defina en la recompilación.

// CS1684_c.cs  
// compile with: /target:library /keyfile:CS1684.key /out:CS1684_a.dll  
public class A {  
   public void Test() {}  
}  

Ejemplo 4

Este módulo hace referencia al segundo módulo mediante el identificador Ref. Sin embargo, el segundo módulo contiene una referencia a la clase C2, que ya no existe debido a la compilación del paso anterior y, por lo tanto, se devuelve el mensaje de error CS1684 al compilar este módulo.

// CS1684_d.cs  
// compile with: /reference:cs1684_a.dll /reference:cs1684_b.dll  
// CS1684 expected  
class Tester  
{  
   public static void Main()  
   {  
      Ref.GetA().Test();  
   }  
}