Partilhar via


Corrigir erros e avisos relacionados com referências de assembly

  • CS0012: O tipo 'tipo' é definido em um assembly que não é referenciado. Você deve adicionar uma referência ao assembly 'assembly'.
  • CS0234: O tipo ou nome de namespace não existe no namespace (está a faltar uma referência de assembly?)
  • CS0246: Não foi possível encontrar o nome do tipo ou do namespace (está faltando uma diretiva de uso ou uma referência de assembly?)
  • CS0400: O tipo ou nome do namespace não pôde ser encontrado no namespace global (faltará uma referência a uma assembly?)
  • CS0735: Tipo inválido especificado como um argumento para TypeForwardedToAttribute atributo.
  • CS1068: O nome do tipo não pôde ser encontrado no namespace global. Este tipo foi encaminhado para outra assembleia. Considere adicionar uma referência a esse assembly.
  • CS1069: O nome do tipo não pôde ser encontrado no namespace. Este tipo foi encaminhado para outra assembleia. Considere adicionar uma referência a esse assembly.
  • CS1070: Não foi possível encontrar o nome do tipo. Este tipo foi encaminhado para outra assembly. Considere adicionar uma referência a essa assembly.
  • CS1704: Um assembly com o mesmo nome simples já foi importado. Tente remover uma das referências ou assine-as para ativá-las lado a lado.
  • CS1714: A classe base ou interface deste tipo não pôde ser resolvida ou é inválida.
  • CS1760: Vários assemblies referem-se aos mesmos metadados, mas apenas um é uma referência vinculada (especificada usando a opção /link); considere remover uma das referências.
  • CS7008: O nome do assembly é reservado e não pode ser usado como referência em uma sessão interativa.
  • CS7068: A referência ao tipo afirma que ele é definido neste assembly, mas não é definido no código-fonte ou em quaisquer módulos adicionados.
  • CS7069: A referência ao tipo afirma que ele é definido em outro assembly, mas não pôde ser encontrado.
  • CS7071: A referência de assembly é inválida e não pode ser resolvida.
  • CS7079: O tipo é definido em um módulo que não foi adicionado. Você deve adicionar o módulo.
  • CS8090: Há um erro num assembly referenciado.
  • CS8203: Nome de assembly inválido.
  • CS9286: Tipo não contém uma definição e nenhum membro de extensão acessível para o tipo de recetor pode ser encontrado (você está faltando uma diretiva de uso ou uma referência de montagem?)

Além disso, os seguintes avisos são abordados neste artigo:

  • CS1683: A referência ao tipo 'Nome do tipo' afirma que ele é definido neste assembly, mas não está definido no código-fonte ou em quaisquer módulos adicionados.

Referências em falta

Os seguintes erros e avisos indicam a ausência de uma referência de assemblagem.

  • CS0012: O tipo 'tipo' é definido em um assembly que não é referenciado. Você deve adicionar uma referência ao assembly 'assembly'.
  • CS0234: O tipo ou nome de namespace não existe no namespace (estará a faltar uma referência de montagem?)
  • CS0246: Não foi possível encontrar o nome do tipo ou do namespace (está faltando uma diretiva de uso ou uma referência de assembly?)
  • CS9286: Tipo não contém uma definição e nenhum membro de extensão acessível para o tipo de recetor pode ser encontrado (você está faltando uma diretiva de uso ou uma referência de montagem?)

Esses erros do compilador indicam um destes problemas em seu código:

  • O projeto não faz referência à montagem necessária. Para corrigir esse erro, adicione uma referência ao assembly necessário.
  • Você digitou incorretamente o nome de um tipo. Verifique o nome do tipo.
  • Foi utilizado um nome de variável onde era exigido o nome de um System.Type, como no operador typeof ou no operador is.
  • Você usou o operador de escopo global, (::) quando o tipo não está no namespace global.
  • Você está acessando um membro de extensão e o namespace não está especificado em uma using diretiva ou não está fazendo referência ao assembly que contém a extensão.

Quando o assembly parece ser referenciado

Se o assembly parece ser referenciado no seu projeto, mas ainda recebe CS0012, experimente os seguintes passos para resolver problemas:

  • Restaurar pacotes: execute dotnet restore para garantir que todas as referências de pacotes sejam resolvidas corretamente, especialmente depois de instalar ou desinstalar pacotes NuGet.

  • Limpe o cache do pacote NuGet e restaure:

    dotnet nuget locals all --clear
    dotnet restore
    
  • Verifique se há conflitos de versão: verifique se todos os assemblies referenciados usam versões compatíveis. Verifique avisos de redirecionamento de ligação no resultado da compilação.

  • Limpe a solução e reconstrua para garantir que nenhuma referência obsoleta permaneça:

    dotnet clean
    dotnet build
    
  • Verificar a integridade do pacote: Se o erro ocorreu após as operações do pacote, verifique se o pacote foi instalado corretamente removendo-o e reinstalando-o:

    dotnet remove package [PackageName]
    dotnet add package [PackageName]
    

Encaminhamento de tipo

  • CS1068: O nome do tipo não pôde ser encontrado no namespace global. Este tipo foi encaminhado para outra assembleia. Considere adicionar uma referência a esse assembly.
  • CS1069: O nome do tipo não pôde ser encontrado no namespace. Este tipo foi encaminhado para outra assembleia. Considere adicionar uma referência a esse assembly.
  • CS1070: Não foi possível encontrar o nome do tipo. Este tipo foi reencaminhado para outra assemblagem. Considere adicionar uma referência a esta assemblagem.

Esses erros indicam um erro ao fazer referência a um tipo encaminhado para um conjunto diferente. Para resolver qualquer um desses erros, adicione uma referência ao assembly indicado na mensagem de erro.

Referências duplicadas

Os seguintes erros indicam uma referência de assembly duplicada:

  • CS1704: Um assembly com o mesmo nome simples já foi importado. Tente remover uma das referências ou assine-as para ativá-las lado a lado.
  • CS1760: Vários assemblies referem-se aos mesmos metadados, mas apenas um é uma referência vinculada (especificada usando a opção /link); considere remover uma das referências.

Para corrigir esses erros, você deve remover uma das referências ou resolver a duplicação. As causas da duplicação incluem:

  • Vários assemblies não assinados têm o mesmo nome.
  • Seu projeto faz referência a várias versões do mesmo assembly.

Referência de assembly inválida

Os seguintes erros indicam que uma referência de assembly é inválida:

  • CS7008: O nome do assembly é reservado e não pode ser usado como referência em uma sessão interativa.
  • CS7069: A referência ao tipo afirma que ele é definido em outro assembly, mas não pôde ser encontrado.
  • CS7071: A referência de assembly é inválida e não pode ser resolvida.
  • CS7079: O tipo é definido em um módulo que não foi adicionado. Você deve adicionar o módulo.
  • CS8090: Há um erro numa assemblagem referenciada.
  • CS8203: Nome de assembly inválido.

O aviso a seguir também indica um assembly de referência inválido:

  • CS1683: A referência ao tipo 'Nome do tipo' afirma que ele é definido neste assembly, mas não é definido no código-fonte ou em quaisquer módulos adicionados

Verifique se o nome do assembly está escrito corretamente. O arquivo de assembly referenciado pode ser inválido.