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?)
  • 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.
  • CS8206: O módulo 'nome do módulo' na assembleia 'nome da assembleia' está a encaminhar o tipo 'nome do tipo' para múltiplas assembleias: 'nome da primeira assembleia' e 'nome da segunda assembleia'.
  • CS8356: O tipo pré-definido 'nome do tipo' é declarado em múltiplas assembleias referenciadas: 'first assembly name' e 'second assembly name'
  • 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, este artigo aborda os seguintes avisos:

  • 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?)
  • CS1714: A classe base ou interface deste tipo não pôde ser resolvida ou é inválida.
  • 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.
  • CS8206: O módulo 'nome do módulo' na assembleia 'nome da assembleia' está a encaminhar o tipo 'nome do tipo' para múltiplas assembleias: 'nome da primeira assembleia' e 'nome da segunda assembleia'.

CS1068, CS1069 e CS1070 indicam um erro na referência a um tipo encaminhado para um conjunto diferente. Adicione uma referência ao conjunto indicado na mensagem de erro.

O CS8206 indica a existência de metadados de reencaminhador de tipos em conflito num assembly ou módulo referenciado. O mesmo tipo é encaminhado para mais do que uma montagem de destino. Use dependências corrigidas ou reconstruídas que encaminhem o tipo para um destino. Assegure que as versões de pacotes e assembly são consistentes, ou remova a referência que introduz os metadados conflitantes. Alias de origem ou alterações não relacionadas às declarações locais de tipo não corrigem os metadados referenciados.

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.
  • CS8356: O tipo pré-definido 'nome do tipo' é declarado em múltiplas assembleias referenciadas: 'first assembly name' e 'second assembly name'

Para corrigir estes erros, remova uma das referências ou resolva a duplicação. As causas da duplicação incluem:

  • Múltiplas assembleias sem assinatura com o mesmo nome.
  • Seu projeto faz referência a várias versões do mesmo assembly.

Para o CS8356, remova ou substitua a referência duplicada ou incompatível que define o mesmo tipo de runtime pré-definido. Assegure que o projeto tem como alvo uma estrutura coerente e um conjunto de referência-assemblagem. Não adicione outra definição de fonte do tipo pré-definido.

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.
  • CS7068: A referência ao tipo afirma estar definido neste conjunto, mas não está definido na 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 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

Verifica se escreveste corretamente o nome da assembleia. O arquivo de assembly referenciado pode ser inválido.