Risolvere gli errori e gli avvisi correlati ai riferimenti agli assembly

  • CS0012: il tipo 'type' è definito in un assembly a cui non viene fatto riferimento. È necessario aggiungere un riferimento all'assembly 'assembly'.
  • CS0234: il tipo o il nome dello spazio dei nomi non esiste nello spazio dei nomi (manca un riferimento all'assembly?)
  • CS0246: Impossibile trovare il tipo o il nome dello spazio dei nomi (potrebbe mancare una direttiva using o un riferimento all'assembly?)
  • CS0400: Il tipo o il nome dello spazio dei nomi non è stato trovato nello spazio dei nomi globale (forse manca un riferimento all'assembly?)
  • CS1068: il nome del tipo non è stato trovato nello spazio dei nomi globale. Questo tipo è stato inoltrato a un altro assembly. Prendere in considerazione l'aggiunta di un riferimento a tale assembly.
  • CS1069: impossibile trovare il nome del tipo nello spazio dei nomi . Questo tipo è stato inoltrato a un altro assembly. Prendere in considerazione l'aggiunta di un riferimento a tale assembly.
  • CS1070: impossibile trovare il nome del tipo. Questo tipo è stato inoltrato a un altro assembly. Prendere in considerazione l'aggiunta di un riferimento a tale assembly.
  • CS1704: è già stato importato un assembly con lo stesso nome semplice. Provare a rimuovere uno dei riferimenti o firmarli per abilitare side-by-side.
  • CS1714: impossibile risolvere la classe o l'interfaccia di base di questo tipo o non è valida.
  • CS1760: più assembly fanno riferimento agli stessi metadati, ma solo uno è un riferimento collegato (specificato usando l'opzione /link); provare a rimuovere uno dei riferimenti.
  • CS7008: il nome dell'assembly è riservato e non può essere usato come riferimento in una sessione interattiva.
  • CS7068: Il riferimento al tipo indica che è definito in questo assembly, ma non è definito nel sorgente o in alcun modulo aggiunto.
  • CS7069: Riferimento al tipo afferma che è definito in un altro assembly, ma non è stato trovato.
  • CS7071: Il riferimento all'assembly non è valido e non può essere risolto.
  • CS7079: il tipo è definito in un modulo che non è stato aggiunto. È necessario aggiungere il modulo.
  • CS8090: si verifica un errore in un assembly a cui si fa riferimento.
  • CS8203: Nome Assembly non valido.
  • CS8206: Il modulo 'nome modulo' nell'assembly 'nome assembly' inoltra il tipo 'nome tipo' a più assembly diversi: 'nome primo assembly' e 'nome secondo assembly'.
  • CS8356: Il tipo predefinito 'type name' è dichiarato in più assembly di riferimento: 'first assembly name' e 'second assembly name'
  • CS9286: il tipo non contiene una definizione e non è stato trovato alcun membro di estensione accessibile per il tipo di ricevitore (manca una direttiva using o un riferimento all'assembly?)

In questo articolo vengono inoltre illustrati gli avvisi seguenti:

  • CS1683: Il riferimento al tipo 'Type Name' afferma che è definito nell'assembly, ma non è definito nella sorgente o nei moduli inclusi.

Riferimenti mancanti

Gli errori e gli avvisi seguenti indicano che manca un riferimento all'assembly:

  • CS0012: il tipo 'type' è definito in un assembly a cui non viene fatto riferimento. È necessario aggiungere un riferimento all'assembly 'assembly'.
  • CS0234: il tipo o il nome del namespace non esiste nel namespace (potrebbero mancare riferimenti all'assembly?)
  • CS0246: impossibile trovare il tipo o il nome dello spazio dei nomi (manca una direttiva using o un riferimento all'assembly?)
  • CS1714: impossibile risolvere la classe o l'interfaccia di base di questo tipo o non è valida.
  • CS9286: il tipo non contiene una definizione e non è stato trovato alcun membro di estensione accessibile per il tipo di ricevitore (manca una direttiva using o un riferimento all'assembly?)

Questi errori del compilatore indicano uno di questi problemi nel codice:

  • Il progetto non fa riferimento all'assembly richiesto. Per correggere questo errore, aggiungere un riferimento all'assembly necessario.
  • Hai scritto male il nome di un tipo. Controllare il nome del tipo.
  • È stato usato un nome di variabile in cui ci si aspettava il nome di un System.Type, ad esempio con l'operatore typeof o l'operatore is.
  • È stato usato l'operatore di ambito globale (::) quando il tipo non si trova nello spazio dei nomi globale.
  • Stai accedendo a un membro di estensione e lo spazio dei nomi non è specificato in una direttiva using, oppure non stai facendo riferimento all'assembly che contiene l'estensione.

Quando viene visualizzato un riferimento all'assembly

Se l'assembly sembra essere referenziato nel tuo progetto ma ricevi comunque l'errore CS0012, prova questi passaggi per risolvere i problemi.

  • Ripristina pacchetti: eseguire dotnet restore per assicurarsi che tutti i riferimenti ai pacchetti siano risolti correttamente, soprattutto dopo l'installazione o la disinstallazione dei pacchetti NuGet.

  • Cancellare la cache e il ripristino dei pacchetti NuGet:

    dotnet nuget locals all --clear
    dotnet restore
    
  • Verificare la presenza di conflitti di versione: verificare che tutti gli assembly a cui si fa riferimento usino versioni compatibili. Cercare gli avvisi di reindirizzamento dell'associazione nell'output di compilazione.

  • Pulire la soluzione e ricompilare per garantire che non rimangano riferimenti non aggiornati:

    dotnet clean
    dotnet build
    
  • Verificare l'integrità del pacchetto: se l'errore si è verificato dopo le operazioni del pacchetto, verificare che il pacchetto sia stato installato correttamente rimuovendolo e reinstallandolo:

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

Inoltro dei tipi

  • CS1068: il nome del tipo non è stato trovato nello spazio dei nomi globale. Questo tipo è stato inoltrato a un altro assembly. Prendere in considerazione l'aggiunta di un riferimento a tale assembly.
  • CS1069: impossibile trovare il nome del tipo nello spazio dei nomi . Questo tipo è stato inoltrato a un altro assembly. Prendere in considerazione l'aggiunta di un riferimento a tale assembly.
  • CS1070: impossibile trovare il nome del tipo. Questo tipo è stato inoltrato a un altro assembly. Prendere in considerazione l'aggiunta di un riferimento a tale assembly.
  • CS8206: Il modulo 'nome modulo' nell'assembly 'nome assembly' inoltra il tipo 'nome tipo' a più assembly: 'nome primo assembly' e 'nome secondo assembly'.

CS1068, CS1069 e CS1070 indicano un errore che fa riferimento a un tipo inoltrato a un assembly diverso. Aggiungere un riferimento all'assembly indicato nel messaggio di errore.

CS8206 indica metadati di inoltro dei tipi in conflitto in un assembly o modulo referenziato. Lo stesso tipo viene inoltrato a più assembly di destinazione. Utilizzare dipendenze corrette o ricompilate che inoltrano il tipo verso un'unica destinazione. Verificare che le versioni dei pacchetti e degli assembly siano coerenti o rimuovere il riferimento che introduce i metadati in conflitto. Gli alias di origine o le modifiche non correlate alle dichiarazioni di tipo locale non correggeno i metadati a cui si fa riferimento.

Riferimenti duplicati

Gli errori seguenti indicano un riferimento all'assembly duplicato:

  • CS1704: è già stato importato un assembly con lo stesso nome semplice. Provare a rimuovere uno dei riferimenti o firmarli per abilitare side-by-side.
  • CS1760: più assembly fanno riferimento agli stessi metadati, ma solo uno è un riferimento collegato (specificato usando l'opzione /link); provare a rimuovere uno dei riferimenti.
  • CS8356: Il tipo predefinito 'type name' è dichiarato in più assembly di riferimento: 'first assembly name' e 'second assembly name'

Per correggere questi errori, rimuovere uno dei riferimenti o risolvere la duplicazione. Le cause della duplicazione includono:

  • Più assembly non firmati con lo stesso nome.
  • Il progetto fa riferimento a più versioni dello stesso assembly.

Per CS8356, rimuovere o sostituire il riferimento duplicato o incompatibile che definisce lo stesso tipo di runtime predefinito. Assicurarsi che il progetto sia destinato a usare uno stesso framework e un set coerente di assembly di riferimento. Non aggiungere un'altra definizione di origine del tipo predefinito.

Riferimento all'assembly non valido

Gli errori seguenti indicano che un riferimento all'assembly non è valido:

  • CS7008: il nome dell'assembly è riservato e non può essere usato come riferimento in una sessione interattiva.
  • CS7068: Il riferimento al tipo dichiara che è definito in questo assembly, ma non è definito nel codice sorgente o in alcun modulo aggiunto.
  • CS7069: Il riferimento al tipo afferma che è definito in un altro assembly, ma non è stato trovato.
  • CS7071: Il riferimento all'assembly non è valido e non può essere risolto.
  • CS7079: il tipo è definito in un modulo che non è stato aggiunto. È necessario aggiungere il modulo.
  • CS8090: si verifica un errore in un assembly a cui si fa riferimento.
  • CS8203: Nome assembly non valido.

L'avviso seguente indica anche un assembly di riferimento non valido:

  • CS1683: Riferimento al tipo 'Type Name' afferma che è definito in questo assembly, ma non è definito nella sorgente o in qualsiasi modulo aggiunto

Verificare che il nome dell'assembly sia stato digitato correttamente. Il file di assembly a cui si fa riferimento potrebbe non essere valido.