Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel worden de volgende compilerfouten behandeld:
- CS0104: Fout: 'referentie' is een ambigue referentie tussen 'identifier' en 'identifier'.
- CS0116: Fout: een naamruimte kan niet rechtstreeks leden bevatten, zoals velden, methoden of instructies.
- CS0138: Fout: Een using namespace-richtlijn kan alleen op naamruimten worden toegepast; 'type' is een type, geen naamruimte.
- CS0430: Fout: de externe alias 'alias' is niet opgegeven in een /reference-optie.
-
CS0431: Fout: kan alias 'id' niet gebruiken omdat
::de alias verwijst naar een type. Gebruik.in plaats daarvan. - CS0432: Fout: Alias 'id' niet gevonden.
- CS0434: Fout: De naamruimteNaamruimte1 in NamespaceName2 conflicteert met het type TypeName1 in NamespaceName3.
- CS0438: Fout: het type 'type' in 'module_1' conflicteert met de naamruimte 'naamruimte' in 'module_2'.
- CS0439: Fout: Een externe aliasdeclaratie moet voorafgaan aan alle andere elementen die zijn gedefinieerd in de naamruimte.
- CS0518: Fout: vooraf gedefinieerd type 'type' is niet gedefinieerd of geïmporteerd.
- CS0576: Fout: naamruimte 'naamruimte' bevat een definitie die conflicteert met alias 'id'.
-
CS0687: Fout: De aliaskwalificatie
::van de naamruimte wordt altijd omgezet in een type of naamruimte, dus is hier illegaal. Overweeg in plaats daarvan te gebruiken.. - CS1022: Fout: Type of naamruimtedefinitie, of einde van bestand verwacht.
- CS1529: Fout: een using-component moet voorafgaan aan alle andere elementen die zijn gedefinieerd in de naamruimte, behalve externe aliasdeclaraties.
- CS1537: Fout: het gebruik van alias 'alias' verscheen eerder in deze naamruimte.
- CS1671: Fout: een naamruimtedeclaratie kan geen modifiers of kenmerken hebben.
- CS1679: Fout: Ongeldige extern alias voor '/reference'; 'id' is geen geldige id.
- CS1680: Fout: ongeldige aliasoptie: alias=- ontbrekende bestandsnaam.
- CS1681: Fout: je kunt de globale extern the-alias niet opnieuw definiëren.
- CS1730: Fout: Assembly- en modulekenmerken moeten voorafgaan aan alle andere elementen die in een bestand zijn gedefinieerd, behalve het gebruik van componenten en externe aliasdeclaraties.
- CS2034: Fout: een /reference-optie die een extern alias declareert, kan slechts één bestandsnaam hebben. Als u meerdere aliassen of bestandsnamen wilt opgeven, gebruikt u meerdere /verwijzingsopties.
- CS7000: Fout: Onverwacht gebruik van een aliasnaam.
-
CS7007: Fout: Een
using staticinstructie kan alleen worden toegepast op typen. Overweeg in plaats daarvan eenusing namespacerichtlijn. - CS7015: Fout: extern alias is niet geldig in deze context.
- CS7021: Fout: Kan naamruimte niet declareren in scriptcode.
- CS8083: Fout: een alias gekwalificeerde naam is geen expressie.
- CS8085: Fout: een instructie 'using static' kan niet worden gebruikt om een alias te declareren.
- CS8914: Fout: Een globale gebruiksrichtlijn kan niet worden gebruikt in een naamruimtedeclaratie.
- CS8915: Fout: Een globale gebruiksrichtlijn moet voorafgaan aan alle niet-globale gebruiksrichtlijnen.
- CS8954: Fout: Bronbestand mag slechts één naamruimtedeclaratie met bestandsbereik bevatten.
- CS8955: Fout: Bronbestand mag niet zowel declaraties van bestandsbereiken als normale naamruimten bevatten.
- CS8956: Fout: Naamruimte met bestandsbereik moet voorafgaan aan alle andere leden in een bestand.
-
CS9130: Fout: Het gebruik van alias kan geen type zijn
ref. -
CS9131: Fout: alleen een using-alias kan worden gedefinieerd als
unsafe. - CS9132: Fout: Het gebruik van alias kan geen null-verwijzingstype zijn.
-
CS9133: Fout:
staticmodifier moet voorafgaan aanunsafemodifier. - CS9162: Type is niet geldig voor 'using static'. Alleen een klasse, struct, interface, enum, delegate of namespace kan worden gebruikt.
En de volgende compilerwaarschuwingen:
- CS0105: Waarschuwing: de using-richtlijn voor 'naamruimte' is eerder verschenen in deze naamruimte.
- CS0435: Waarschuwing: de naamruimte 'naamruimte' in 'assembly' conflicteert met het geïmporteerde type 'type' in 'assembly'. Gebruik de naamruimte die is gedefinieerd in 'assembly'.
- CS0436: Waarschuwing: het type 'type' in 'assembly' conflicteert met het geïmporteerde type 'type2' in 'assembly'. Het type gebruiken dat is gedefinieerd in 'assembly'.
- CS0437: Waarschuwing: het type 'type' in 'assembly2' conflicteert met de geïmporteerde naamruimte 'naamruimte' in 'assembly1'. Het type gebruiken dat is gedefinieerd in 'assembly'.
-
CS0440: Waarschuwing: Het definiëren van een alias met de naam
globalis onaangenaam omdatglobal::altijd verwijst naar de globale naamruimte en niet naar een alias. - CS8019: Info: Onnodig gebruik van richtlijn.
- CS8020: Info: Ongebruikte extern alias.
- CS8933: Info: De using-instructie verscheen eerder als globaal gebruik.
Deze fouten en waarschuwingen geven problemen aan met using instructies, naamruimtedeclaraties of naamconflicten tussen typen en naamruimten. In de volgende secties worden deze fouten beschreven en hoe u deze kunt corrigeren.
Gebruik van richtlijnen
De volgende fouten hebben betrekking op using richtlijnen:
- CS0105: De using directive voor 'naamruimte' is al eerder in deze naamruimte verschenen.
- CS0430: De externe alias 'alias' is niet opgegeven in een /reference-optie.
- CS0439: Een extern aliasdeclaratie moet voorafgaan aan alle andere elementen die zijn gedefinieerd in de naamruimte.
- CS1529: Een using-component moet voorafgaan aan alle andere elementen die zijn gedefinieerd in de naamruimte, behalve externe aliasdeclaraties.
- CS1679: Ongeldig extern alias voor '/reference'; 'id' is geen geldige id.
- CS1680: Ongeldige aliasoptie: alias=: ontbrekende bestandsnaam.
- CS1681: U kunt de globale extern alias niet opnieuw definiëren.
- CS1730: Assembly- en modulekenmerken moeten voorafgaan aan alle andere elementen die in een bestand zijn gedefinieerd, behalve het gebruik van componenten en externe aliasdeclaraties.
- CS2034: Een /reference-optie die een externe alias declareert, kan slechts één bestandsnaam hebben. Als u meerdere aliassen of bestandsnamen wilt opgeven, gebruikt u meerdere /verwijzingsopties.
- CS7015: 'extern alias' is niet geldig in deze context.
- CS8019: Onnodig gebruik van richtlijn.
- CS8020: Ongebruikte extern alias.
- CS8933: De using-richtlijn verscheen eerder als global using.
Zie de using-richtlijn en extern alias naslaginformatie voor de regels die deze diagnostiek beheersen. Mogelijke oplossingen zijn:
- Verplaats alle
usinginstructies naar het begin van het bestand of naar de bovenkant van de naamruimtedeclaratie. De C#-taal vereist datusingdirectieven vóór andere elementen in een naamruimte (CS1529) komen. - Verplaats alle
extern aliasdeclaraties vóór enigeusinginstructies. In de programmeertaal moeten externe aliassen vóór alle andere elementen komen, waaronderusinginstructies (CS0439, CS7015). - Verplaats alle attributen op assembly- en moduleniveau na
usingclausules enextern aliasdeclaraties, maar vóór eventuele typedeclaraties. Kenmerken moeten de instructies volgen, maar voorafgaan aan typen (CS1730). - Zorg ervoor dat elke
extern aliasdeclaratie in uw broncode een bijbehorende alias heeft die is gedefinieerd in de referentieopties van uw project. De compiler kan geen alias oplossen die niet is opgegeven (CS0430). - Gebruik een afzonderlijke
/referenceoptie voor elke externe alias in plaats van meerdere aliassen in één optie te combineren. Voor de compiler is één alias per referentieoptie (CS2034) vereist. - Zorg ervoor dat de alias in uw
/referenceoptie een geldige C#-id is. De alias moet de id-naamgevingsregels (CS1679) volgen. Neem een bestandsnaam op na het=-teken in uw aliasreferentieoptie. De compiler moet weten naar welke assembly de alias verwijst (CS1680). - Probeer de
globalexterne alias niet opnieuw te definiëren.globalis een vooraf gedefinieerde alias die verwijst naar alle niet-gealiaseerde verwijzingen (CS1681). - Dubbele
usinginstructies verwijderen. De compiler waarschuwt wanneer dezelfde naamruimte meerdere keren wordt geïmporteerd (CS0105, CS8019, CS8933). - Verwijder ongebruikte
extern aliasdeclaraties. De compiler geeft een diagnose uit wanneer een externe alias wordt gedeclareerd maar nooit wordt verwezen in uw code (CS8020).
Statische directive gebruiken
De volgende fouten hebben betrekking op using static richtlijnen:
- CS0138: Een 'using namespace'-directive kan alleen worden toegepast op naamruimten; 'type' is een type en geen naamruimte.
-
CS7007: Een
using staticrichtlijn kan alleen worden toegepast op typen. Overweeg in plaats daarvan eenusing namespacerichtlijn. -
CS9133:
staticmodifier moet voorafgaan aanunsafemodifier. - CS9162: Type is niet geldig voor het gebruik van 'using static'. Alleen een klasse, struct, interface, enum, delegate of namespace kan worden gebruikt.
Zie de naslaginformatie over de statische instructietaal voor de regels die deze diagnostische gegevens bepalen. Mogelijke oplossingen zijn:
- Voeg de
staticmodifier toe bij het direct importeren van de leden van een type, omdat weglating vanstaticde compiler aangeeft dat u een naamruimte importeert in plaats van een type (CS0138). - Verwijder de wijzigingsfunctie bij het
staticimporteren van een naamruimte, omdatusing staticdeze alleen kan worden toegepast op typen, niet op naamruimten (CS7007). Zorg ervoor dat het doel van eenusing staticrichtlijn een klasse, struct, interface, enum of gemachtigde is, omdat andere typen geen geldige doelen zijn voor statische import (CS9162). - Plaats de
staticmodifier vóór deunsafemodifier wanneer beide worden gecombineerd, omdat in de taal modifiers in een specifieke volgorde vereist zijn (CS9133).
Globale gebruiksrichtlijn
De volgende fouten hebben betrekking op global using richtlijnen:
- CS8914: Een globale gebruiksrichtlijn kan niet worden gebruikt in een naamruimtedeclaratie.
- CS8915: Een globale gebruiksrichtlijn moet voorafgaan aan alle niet-globale gebruiksrichtlijnen.
Zie de globale gebruikt-richtlijn naslaginformatie voor de regels die van toepassing zijn op deze diagnostieken. Mogelijke oplossingen zijn:
- Verplaats
global usingrichtlijnen buiten een naamruimtedeclaratie naar bestandsbereik, omdat globaal gebruik projectbreed toepast en niet kan worden beperkt tot een naamruimte (CS8914). - Plaats alle
global usingrichtlijnen vóór niet-globaleusingrichtlijnen in het bestand, omdat voor de taal globale richtlijnen moeten worden voorafgegaan door lokale richtlijnen (CS8915). - Houd er rekening mee dat een
static global usinginstructie niet kan verwijzen naar een lokaal bestandstype .
Naamruimte met bestandsbereik
De volgende fouten hebben betrekking op naamruimten met bestandsbereik:
- CS8954: Bronbestand mag slechts één naamruimtedeclaratie met bestandsbereik bevatten.
- CS8955: Bronbestand mag niet zowel declaraties van bestandsbereiken als normale naamruimten bevatten.
- CS8956: Naamruimte op bestandsniveau moet voorafgaan aan alle andere leden in een bestand.
Raadpleeg de taalreferentie voor bestandsbereiknaamruimten voor de regels die van toepassing zijn op deze diagnostische controles. Mogelijke oplossingen zijn:
- Gebruik slechts één naamruimtedeclaratie voor bestandsbereik per bestand, omdat in de taal slechts één naamruimte met bestandsbereik de naamruimte voor alle typen in een bestand (CS8954) kan worden ingesteld.
- Kies declaraties voor bestandsbereiken of declaraties voor naamruimten met blokbereik binnen één bestand, omdat de taal geen combinatie van beide stijlen toestaat (CS8955).
- Verplaats de declaratie van de naamruimte binnen het bestandsbereik vóór eventuele typedeclaraties, omdat de naamruimte moet worden ingesteld voordat de typen worden gedeclareerd (CS8956).
Aliaskwalificatie
De volgende fouten hebben betrekking op de alias-kwalificatie.
-
CS0431: Kan alias 'id' niet gebruiken omdat
::de alias verwijst naar een type. Gebruik.in plaats daarvan. - CS0432: Alias 'id' niet gevonden.
-
CS0440: Het definiëren van een alias met de naam
globalis onjuist, omdatglobal::altijd verwijst naar de globale naamruimte en niet naar een alias. -
CS0687: De aliaskwalificatie
::van de naamruimte wordt altijd omgezet in een type of naamruimte, dus is hier illegaal. Overweeg in plaats daarvan te gebruiken.. - CS7000: Onverwacht gebruik van een aliasnaam.
- CS8083: Een alias-gekwalificeerde naam is geen uitdrukking.
Zie de naamruimte-aliaskwalificator voor de regels die gelden voor deze diagnostische gegevens. Mogelijke oplossingen zijn:
- Vervang de
::operator door de.operator wanneer u toegang tot leden van een typealias probeert te krijgen, omdat de::kwalificatie alleen geldig is voor namespacealiassen, niet voor typealiassen (CS0431, CS0687). - Zorg ervoor dat de alias waarnaar u verwijst, is gedeclareerd met een
usinginstructie ofextern aliasomdat de compiler geen niet-gedefinieerde alias (CS0432) niet kan oplossen. - Gebruik de aliaskwalificatie alleen in contexten waarin een type- of naamruimtenaam wordt verwacht, omdat alias-gekwalificeerde namen niet geldig zijn als expressies (CS7000, CS8083).
- Kies een andere naam voor uw alias in plaats van
global, omdatglobalis gereserveerd om te verwijzen naar de algemene naamruimte en kan niet opnieuw worden gedefinieerd (CS0440).
Aliasbeperkingen gebruiken
De volgende fouten hebben betrekking op beperkingen voor het gebruik van aliassen:
- CS0576: Naamruimte 'naamruimte' bevat een definitie die conflicteert met alias 'id'.
- CS1537: De using alias 'alias' verscheen eerder in deze naamruimte.
- CS8085: Een 'using static'-instructie kan niet worden gebruikt om een alias te declareren.
-
CS9130: Een alias kan niet als type worden gebruikt
ref. -
CS9131: Alleen een using-alias kan zijn
unsafe. - CS9132: Het gebruik van alias kan geen null-verwijzingstype zijn.
Zie de taalreferentie voor het gebruik van aliassen voor de regels die van toepassing zijn op deze diagnostiek. Mogelijke oplossingen zijn:
- Kies een unieke naam voor uw alias die geen conflict veroorzaakt met bestaande type- of naamruimtenamen binnen het bereik, omdat de compiler geen onderscheid kan maken tussen de alias en de bestaande definitie (CS0576).
- Gebruik elke aliasnaam slechts eenmaal binnen een naamruimte, omdat dubbele aliasdeclaraties dubbelzinnigheid (CS1537) maken.
- Verwijder de modificator bij het
staticdeclareren van een alias, omdat aliassen en statische import elkaar wederzijds uitsluiten: gebruikusing staticom leden te importeren ofusing Alias =om een alias te maken, maar niet beide (CS8085).
Vanaf C# 12 gelden de volgende beperkingen voor het gebruik van aliassen:
- Gebruik geen
ref,in, ofoutmodifiers in een using-alias, omdat deze parameter modifiers niet geldig zijn in aliascontexten van typen (CS9130). - Gebruik de
unsafewijzigingsfunctie alleen met aliassen die verwijzen naar pointertypen of metusing staticinstructies, omdatunsafezonder alias of statische import niet is toegestaan (CS9131). - Gebruik een niet-null-verwijzingstype bij het maken van een alias naar een verwijzingstype, omdat nullable verwijzingstypen niet rechtstreeks kunnen worden gealiaseerd (CS9132).
Namespace-declaraties
De volgende fouten hebben betrekking op regels voor naamruimtedeclaratie:
- CS0116: Een naamruimte kan geen leden zoals velden, methoden of instructies rechtstreeks bevatten.
- CS1022: Type of naamruimtedefinitie, of einde van bestand verwacht.
- CS1671: Een naamruimtedeclaratie kan geen modifiers of kenmerken hebben.
- CS7021: Kan naamruimte niet declareren in scriptcode.
Zie het trefwoord voor de naamruimte en de algemene structuur van een C#-programmataal voor de regels die deze diagnostische gegevens bepalen. Mogelijke oplossingen zijn:
- Zorg ervoor dat alle methoden, velden en eigenschappen worden gedeclareerd binnen een type (klasse, struct, record of interface) in plaats van rechtstreeks in een naamruimte, omdat naamruimten alleen typedeclaraties, geneste naamruimten en
usinginstructies (CS0116) kunnen bevatten. - Controleer op niet-overeenkomende accolades in het bronbestand, omdat een extra accolade na een naamruimte of typedefinitie een fout veroorzaakt wanneer de compiler onverwachte inhoud tegenkomt aan het einde van het bestand (CS1022).
- Verwijder eventuele toegangsmodifiers of kenmerken uit naamruimtedeclaraties, omdat naamruimten geen ondersteuning bieden voor modifiers, zoals
publicofprivate, en kenmerken kunnen niet worden toegepast (CS1671). - Verplaats naamruimtedeclaraties uit C#-scriptbestanden (
.csx) en naar reguliere bronbestanden (.cs), omdat scriptcode evalueert in één uitvoeringscontext die geen ondersteuning biedt voor naamruimtedeclaraties (CS7021).
Naamruimte- en type-naamgevingsconflicten
De volgende fouten en waarschuwingen hebben betrekking op naamconflicten tussen naamruimten en typen:
- CS0104: 'reference' is een dubbelzinnige referentie tussen 'identifier' en 'identifier'.
- CS0434: De naamruimte NamespaceName1 in NamespaceName2 conflicteert met het type TypeName1 in NamespaceName3.
- CS0435: De naamruimte 'naamruimte' in 'assembly' conflicteert met het geïmporteerde type 'type' in 'assembly'. Gebruik de naamruimte die is gedefinieerd in 'assembly'.
- CS0436: Het type 'type' in 'assembly' conflicteert met het geïmporteerde type 'type2' in 'assembly'. Het type gebruiken dat is gedefinieerd in 'assembly'.
- CS0437: Het type 'type' in 'assembly2' conflicteert met de geïmporteerde naamruimte 'naamruimte' in 'assembly1'. Het type gebruiken dat is gedefinieerd in 'assembly'.
- CS0438: Het type 'type' in 'module_1' conflicteert met de naamruimte 'naamruimte' in 'module_2'.
Zie de using-richtlijn, extern alias en naamruimte-alias taalkundige referenties voor de regels die deze diagnostics bepalen. Mogelijke oplossingen zijn:
- Gebruik een volledig gekwalificeerde naam of een naamruimtealias wanneer uw code verwijst naar een naam die bestaat in meerdere geïmporteerde naamruimten.
- De compiler kan niet bepalen welk type u wilt gebruiken wanneer dezelfde naam wordt weergegeven in twee of meer naamruimten die zijn geïmporteerd door
usinginstructies (CS0104). - Wijzig de naam van het type of de naamruimte wanneer een geïmporteerd type en een geïmporteerde geneste naamruimte dezelfde volledig gekwalificeerde naam delen. De compiler kan er geen onderscheid tussen maken wanneer naar de naam wordt verwezen (CS0434, CS0438).
Als u de naamgevingsconflictwaarschuwingen wilt oplossen, wijzigt u de naam van een van de conflicterende declaraties, gebruikt u een andere naamruimte, verwijdert u de overbodige assemblyverwijzing of gebruikt u een extern alias om onderscheid te maken tussen de twee definities. De compiler lost deze conflicten automatisch op, met behulp van de lokaal gedefinieerde naamruimte boven het geïmporteerde type (CS0435), het lokaal gedefinieerde type boven het geïmporteerde type (CS0436) of het lokaal gedefinieerde type via de geïmporteerde naamruimte (CS0437), maar de waarschuwingen geven een mogelijke bron van verwarring aan die u moet aanpakken.
Vooraf gedefinieerde invoertypen
De volgende fout heeft betrekking op ontbrekende vooraf gedefinieerde typedefinities:
- CS0518: Voorgedefinieerd type 'type' is niet gedefinieerd of geïmporteerd.
Opmerking
Deze waarschuwing wordt alleen gerapporteerd tijdens expliciete build - of herbouwbewerkingen . Deze wordt niet weergegeven tijdens het typen in de IDE als onderdeel van Diagnostische gegevens van IntelliSense. Dit betekent dat als u de waarschuwing herstelt door het veld te gebruiken of te verwijderen, de waarschuwing in de foutenlijst kan blijven staan totdat u het project bouwt of herbouwt.
Zie de taalreferentie voor de NoStandardLib compileroptie voor de regels die deze diagnose regelen.
Controleer of uw project is gericht op de juiste .NET-runtime. Vooraf gedefinieerde typen zoals System.Int32 deze System.String afkomstig zijn uit de runtimebibliotheek. Een onjuiste of ontbrekende <TargetFramework> specificatie voorkomt dat de compiler deze typen kan vinden (CS0518). Zorg ervoor dat de <TargetFramework> eigenschap in uw .csproj bestand de beoogde runtime opgeeft (bijvoorbeeld net10.0). Geef de optie NoStandardLib-compiler niet op, tenzij u uw eigen System naamruimte wilt definiëren. Met deze optie voorkomt u dat de standaardbibliotheek wordt geïmporteerd die alle vooraf gedefinieerde typen (CS0518) definieert. Als de fout zich blijft voordoen, laadt u het project opnieuw in Visual Studio, verwijdert u de obj en bin mappen en bouwt u het project opnieuw of installeert u de .NET-runtime (CS0518).