Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Referência ao tipo 'Type Name' declara que ele está definido em 'Namespace', mas não foi possível encontrá-lo
Esse erro pode ser causado por uma referência em um namespace que se refere a um tipo que ele diz existir em um segundo namespace, mas que não existe. Por exemplo, mydll.dll diz que esse tipo A existe em yourdll.dll, mas não há nenhum tipo assim em 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 definido.
O exemplo a seguir gera o erro CS1684.
Exemplo 1
// CS1684_a.cs
// compile with: /target:library /keyfile:CS1684.key
public class A {
public void Test() {}
}
public class C2 {}
Exemplo 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(); }
}
Exemplo 3
Agora recompilamos o primeiro assembly, deixando a classe C2 sem definição na recompilação.
// 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 por meio do identificador Ref. Porém, 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 compilação deste módulo retorna a mensagem de erro CS1684.
// CS1684_d.cs
// compile with: /reference:cs1684_a.dll /reference:cs1684_b.dll
// CS1684 expected
class Tester
{
public static void Main()
{
Ref.GetA().Test();
}
}