Fouten en waarschuwingen met betrekking tot assemblyverwijzingen oplossen

  • CS0012: Het type 'type' wordt gedefinieerd in een assembly waarnaar niet wordt verwezen. U moet een verwijzing naar assembly 'assembly' toevoegen.
  • CS0234: Het type of de naamruimtenaam bestaat niet in de naamruimte (ontbreekt er een assembly-verwijzing?)
  • CS0246: Kan de naam van het type of de naamruimte niet worden gevonden (ontbreekt er een using-opdracht of een assembly-verwijzing?)
  • CS0400: Het type of de naamruimtenaam is niet gevonden in de algemene naamruimte (ontbreekt er een assembly-verwijzing?)
  • CS1068: De naam van het type is niet gevonden in de globale naamruimte. Dit type is doorgestuurd naar een andere assembly. Overweeg om een verwijzing naar die assembly toe te voegen.
  • CS1069: De typenaam is niet gevonden in de naamruimte. Dit type is doorgestuurd naar een andere assembly. Overweeg om een verwijzing naar die assembly toe te voegen.
  • CS1070: De typenaam is niet gevonden. Dit type is doorgestuurd naar een andere assembly. Overweeg om een verwijzing naar die assembly toe te voegen.
  • CS1704: Er is al een assembly met dezelfde eenvoudige naam geïmporteerd. Verwijder een van de verwijzingen of onderteken ze om ze naast elkaar in te schakelen.
  • CS1714: De basisklasse of -interface van dit type kan niet worden omgezet of is ongeldig.
  • CS1760: Meerdere assembly's verwijzen naar dezelfde metagegevens, maar slechts één is een gekoppelde verwijzing (opgegeven met de optie /link); overweeg een van de verwijzingen te verwijderen.
  • CS7008: De assemblynaam is gereserveerd en kan niet worden gebruikt als verwijzing in een interactieve sessie.
  • CS7068: Verwijzing naar type beweert dat het in deze assembly is gedefinieerd, maar het is niet gedefinieerd in de bron of in toegevoegde modules.
  • CS7069: Verwijzing naar type beweert dat het in een andere assembly is gedefinieerd, maar het kon niet worden gevonden.
  • CS7071: Assembly-verwijzing is ongeldig en kan niet worden opgelost.
  • CS7079: Het type wordt gedefinieerd in een module die niet is toegevoegd. U moet de module toevoegen.
  • CS8090: Er is een fout in een assembly waarnaar wordt verwezen.
  • CS8203: Ongeldige assemblagenaam.
  • CS8206: Module 'module name' in assembly 'assembly name' stuurt het type 'type name' door naar meerdere assembly's: 'first assembly name' en 'second assembly name'.
  • CS8356: Vooraf gedefinieerd type 'typenaam' wordt gedeclareerd in meerdere assembly's waarnaar wordt verwezen: 'first assembly name' en 'second assembly name'
  • CS9286: Het type bevat geen definitie en er is geen toegankelijk uitbreidingslid voor het ontvangertype gevonden (ontbreekt er een using-instructie of een assemblyverwijzing?)

Daarnaast worden in dit artikel de volgende waarschuwingen behandeld:

  • CS1683: Verwijzing naar het type 'Typenaam' claimt dat deze is gedefinieerd in deze assembly, maar deze is niet gedefinieerd in de bron of eventuele toegevoegde modules.

Ontbrekende verwijzingen

De volgende fouten en waarschuwingen geven aan dat u een assemblyverwijzing mist:

  • CS0012: Het type 'type' wordt gedefinieerd in een assembly waarnaar niet wordt verwezen. U moet een verwijzing naar assembly 'assembly' toevoegen.
  • CS0234: Het type of de naamruimtenaam bestaat niet in de naamruimte (ontbreekt er een assembly-verwijzing?)
  • CS0246: De type- of naamruimtenaam kon niet worden gevonden (mist u een using-directive of een assembly-referentie?)
  • CS1714: De basisklasse of -interface van dit type kan niet worden omgezet of is ongeldig.
  • CS9286: Het type bevat geen definitie en er is geen toegankelijk uitbreidingslid voor het ontvangertype gevonden (ontbreekt er een using-instructie of een assemblyverwijzing?)

Deze compilerfouten geven een van deze problemen in uw code aan:

  • Het project verwijst niet naar de vereiste assemblage. Als u deze fout wilt oplossen, voegt u een verwijzing toe naar de vereiste assembly.
  • U hebt de naam van een type verkeerd gespeld. Controleer de naam van het type.
  • U hebt een variabelenaam gebruikt waarbij de naam van een variabele System.Type werd verwacht, zoals in de typeof operator of de is operator.
  • U hebt de globale bereikoperator gebruikt(::) wanneer het type zich niet in de globale naamruimte bevindt.
  • U opent een extensielid en de namespace is niet opgegeven in een using richtlijn. Ook verwijst u mogelijk niet naar de assembly die de extensie bevat.

Wanneer naar de assembly wordt verwezen

Als naar de assembly wordt verwezen in uw project, maar u nog steeds CS0012 ontvangt, voert u de volgende stappen uit om het probleem op te lossen:

  • Herstelpakketten: Voer dotnet restore uit om ervoor te zorgen dat alle pakketverwijzingen correct zijn opgelost, met name nadat u NuGet-pakketten hebt geïnstalleerd of verwijderd.

  • Wis de NuGet-pakketcache en herstel:

    dotnet nuget locals all --clear
    dotnet restore
    
  • Controleer op versieconflicten: controleer of alle assembly's waarnaar wordt verwezen compatibele versies gebruiken. Zoek in de buildoutput naar waarschuwingen over binding redirects.

  • Schoon de oplossing op en bouw opnieuw om ervoor te zorgen dat er geen verouderde verwijzingen blijven:

    dotnet clean
    dotnet build
    
  • Controleer de pakketintegriteit: als de fout is opgetreden na pakketbewerkingen, controleert u of het pakket correct is geïnstalleerd door het pakket te verwijderen en opnieuw te installeren:

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

Type doorsturen

  • CS1068: De naam van het type is niet gevonden in de globale naamruimte. Dit type is doorgestuurd naar een andere assembly. Overweeg om een verwijzing naar die assembly toe te voegen.
  • CS1069: De typenaam is niet gevonden in de naamruimte. Dit type is doorgestuurd naar een andere assembly. Overweeg om een verwijzing naar die assembly toe te voegen.
  • CS1070: De typenaam is niet gevonden. Dit type is doorgestuurd naar een andere assembly. Overweeg om een verwijzing naar die assembly toe te voegen.
  • CS8206: De module 'module name' in assembly 'assembly name' stuurt het type 'type name' door naar meerdere assemblies: 'first assembly name' en 'second assembly name'.

CS1068, CS1069 en CS1070 geven een fout aan die verwijst naar een type dat naar een andere assembly wordt doorgestuurd. Voeg een verwijzing toe naar de assembly die wordt aangegeven in het foutbericht.

CS8206 geeft aan dat er conflicterende typeforwarder-metagegevens aanwezig zijn in een assembly of module waarnaar wordt verwezen. Hetzelfde type wordt doorgestuurd naar meer dan één assembly als bestemming. Gebruik gecorrigeerde of opnieuw opgebouwde afhankelijkheden die het type doorsturen naar één bestemming. Zorg ervoor dat pakket- en assemblyversies consistent zijn of verwijder de verwijzing die de conflicterende metagegevens introduceert. Bronaliassen of niet-gerelateerde wijzigingen in declaraties van lokale typen corrigeren de metagegevens waarnaar wordt verwezen niet.

Dubbele verwijzingen

De volgende fouten geven een dubbele assembly-verwijzing aan:

  • CS1704: Er is al een assembly met dezelfde eenvoudige naam geïmporteerd. Verwijder een van de verwijzingen of onderteken ze om ze naast elkaar in te schakelen.
  • CS1760: Meerdere assembly's verwijzen naar dezelfde metagegevens, maar slechts één is een gekoppelde verwijzing (opgegeven met de optie /link); overweeg een van de verwijzingen te verwijderen.
  • CS8356: Vooraf gedefinieerd type 'typenaam' wordt gedeclareerd in meerdere assembly's waarnaar wordt verwezen: 'first assembly name' en 'second assembly name'

Als u deze fouten wilt oplossen, verwijdert u een van de verwijzingen of lost u de duplicatie op. Oorzaken voor duplicatie zijn onder andere:

  • Meerdere niet-ondertekende assemblies met dezelfde naam.
  • Uw project verwijst naar meerdere versies van dezelfde assembly.

Voor CS8356 verwijdert of vervangt u de dubbele of incompatibele verwijzing waarmee hetzelfde vooraf gedefinieerde runtimetype wordt gedefinieerd. Zorg ervoor dat het project op één samenhangend framework en één set referentie-assemblies is gericht. Voeg geen andere brondefinitie toe van het vooraf gedefinieerde type.

Ongeldige assembly-verwijzing

De volgende fouten geven aan dat een assembly-verwijzing ongeldig is:

  • CS7008: De assemblynaam is gereserveerd en kan niet worden gebruikt als verwijzing in een interactieve sessie.
  • CS7068: Verwijzing naar het type beweert dat het in deze assembly is gedefinieerd, maar het is niet gedefinieerd in de broncode of in toegevoegde modules.
  • CS7069: Verwijzing naar type beweert dat het is gedefinieerd in een andere assembly, maar het kon niet worden gevonden.
  • CS7071: Assembly-verwijzing is ongeldig en kan niet worden opgelost.
  • CS7079: Het type wordt gedefinieerd in een module die niet is toegevoegd. U moet de module toevoegen.
  • CS8090: Er is een fout in een assembly waarnaar wordt verwezen.
  • CS8203: Ongeldige assembly-naam.

De volgende waarschuwing geeft ook een ongeldige referentie-assemblage aan:

  • CS1683: Verwijzing naar het type 'Typenaam' claimt dat deze is gedefinieerd in deze assembly, maar deze is niet gedefinieerd in de bron of eventuele toegevoegde modules

Controleer of u de naam van de assembly correct hebt gespeld. Het assemblybestand waarnaar wordt verwezen, is mogelijk ongeldig.