Ler em inglês

Partilhar via


Aviso do compilador (nível 1) CS1684

A referência ao tipo 'Type Name' afirma que está definido em 'Namespace', mas não foi possível encontrá-lo

Esse erro pode ser causado por uma referência dentro de um namespace referente a um tipo que diz existir dentro de um segundo namespace, mas o tipo não existe. Por exemplo, mydll.dll diz que esse tipo A existe dentro yourdll.dll, mas esse tipo não existe dentro yourdll.dll. Uma possível causa desse erro é que a versão do yourdll.dll que você está usando é muito antiga e A ainda não foi definida.

O exemplo a seguir gera CS1684.

Exemplo 1

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

Exemplo 2

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

Exemplo 3

Agora reconstruímos a primeira montagem, deixando de fora a definição da classe C2 que não será definida na recompilação.

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

Exemplo 4

Este módulo faz referência ao segundo módulo através do identificador Ref. Mas o segundo módulo contém uma referência à classe C2, que não existe mais devido à compilação na etapa anterior e, portanto, a mensagem de erro CS1684 é retornada da compilação deste módulo.

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