Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A fordító a következő hibákat generálja az előfeldolgozási irányelvek helytelen használatához:
- CS1024: Az előfeldolgozóra vonatkozó irányelv várható
- CS1025: Egysoros megjegyzés vagy sorvég várható
- CS1027: a #endif direktíva várható
- CS1028: Váratlan előfeldolgozási irányelv
- CS1029: #error: "text"
- CS1030: #warning: „text”
- CS1032: Nem definiálhatók/nem határozhatók meg az előfeldolgozó szimbólumok a fájl első tokenje után
- CS1038: #endregion irányelv várható
- CS1040: Az előfeldolgozási direktíváknak a sor első nem térközű karaktereként kell szerepelniük
- CS1517: Érvénytelen előfeldolgozási kifejezés
- CS1560: Az előfeldolgozási irányelvhez megadott fájlnév érvénytelen. A fájlnév túl hosszú vagy nem érvényes fájlnév
- CS1576: A #line irányelvhez megadott sorszám hiányzik vagy érvénytelen
- CS1578: Fájlnév, egysoros megjegyzés vagy sorvég várható
- CS1633: Ismeretlen #pragma irányelv
- CS1634: Várható letiltás vagy visszaállítás
- CS1635: A figyelmeztetési kód nem állítható vissza, mert globálisan le lett tiltva
- CS1691: A "szám" nem érvényes figyelmeztető szám
- CS1692: Érvénytelen szám
- CS1694: Az előfeldolgozási irányelvhez megadott fájlnév érvénytelen. A fájlnév túl hosszú vagy nem érvényes fájlnév
- CS1695: Érvénytelen #pragma checksum szintaxisa; helyesen: #pragma checksum "filename" "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" "XXXX..."
- CS1696: Egysoros megjegyzés vagy sorvég várható
- CS1709: Az előfeldolgozási direktívához megadott fájlnév üres
- CS7009: A fájl első jelszóeleme után nem használható #r
- CS7010: Idézett fájlnév várható
- CS7011: #r csak szkriptekben engedélyezett
- CS8097: #load csak szkriptekben engedélyezett
- CS8098: A fájl első karaktere után nem használható a #load
- CS8938: A #line irányelv értéke hiányzik vagy a tartományon kívül esik
- CS8939: A #line irányelv zárópozíciójának nagyobbnak vagy egyenlőnek kell lennie a kezdő pozíciónál
- CS8996: A nyers karakterlánc literálok nem engedélyezettek az előfeldolgozási irányelvekben
- CS9028: A #line span direktíva szóközt igényel az első zárójel előtt, a karakter eltolása előtt és a fájlnév előtt
-
CS9297:
#:az irányelvek nem lehetnek a fájl első tokenje után -
CS9298:
#:az irányelvek csak fájlalapú programokban használhatók (-features:FileBasedProgram) -
CS9299: A
#:irányelvek nem követhetik a#ifirányelvet -
CS9314:
#!az irányelvek csak szkriptekben vagy fájlalapú programokban használhatók
Érvénytelen előfeldolgozási irányelv szintaxisa
- CS1024: Az előfeldolgozóra vonatkozó irányelv várható
- CS1025: Egysoros megjegyzés vagy sorvég várható
- CS1027: #endif irányelv várható
- CS1028: Váratlan előfeldolgozási irányelv
- CS1038: #endregion irányelv várható
- CS1040: Az előfeldolgozási direktíváknak a sor első nem térközű karaktereként kell megjelennie
- CS1517: Érvénytelen előfeldolgozási kifejezés
- CS1633: Ismeretlen #pragma irányelv
- CS1696: Egysoros megjegyzés vagy sorvég várható
- CS8996: A nyers karakterláncliterálok nem engedélyezettek az előfeldolgozási utasításokban
Ezek a hibák azt jelzik, hogy érvénytelen szintaxist használt az előfeldolgozási irányelvekhez. A gyakori kiváltó okok között a következőket találjuk:
- Az
#után ismeretlen irányelv használata (CS1024, CS1633). - Többsoros megjegyzések belefűzve az irányelvsorokra (CS1025, CS1696).
- Irányelvek használata váratlan helyeken (CS1028).
- Hiányoznak a szükséges egyező irányelvek (CS1027, CS1038).
- Szimbólumok nem lehetnek definiálva vagy törölve az első tokenként a fájlban (CS1032)
- Az utasítás nem kerül sorra mint sor első eleme (CS1040).
- Érvénytelen kifejezések használata feltételes fordításban (CS1517).
- Nyers sztringkonstansok használata az előfeldolgozási irányelvekben (CS8996).
CS1024-példa – Az előfeldolgozóra vonatkozó irányelv várható:
#import System // CS1024 - "import" is not a valid directive
CS1025-példa – Egysoros megjegyzés vagy sorvég várható:
#if true /* hello
*/ // CS1025 - multiline comment not allowed
#endif
CS1027-példa – #endif irányelv várható:
#if true // CS1027 - missing #endif
class Test { }
CS1028-példa – Váratlan előfeldolgozási irányelv:
#endif // CS1028 - no matching #if
CS1032-példa – #define és #undef előprocesszor-irányelveknek más jogkivonatok előtt kell megjelennie:
/* Comment */
#define X // CS1032 - directive not first token in file
CS1038-példa – #endregion irányelv várható:
#region testing
class Test { }
// CS1038 - missing #endregion
CS1040-példa – Az előfeldolgozási irányelveknek az első nem üres szóköz karakterként kell megjelennie:
/* Comment */ #define X // CS1040 - directive not first on line
CS1517-példa – Érvénytelen előfeldolgozó kifejezés:
#if 1 // CS1517 - numeric literals not allowed
#endif
#if ~symbol // CS1517 - bitwise operators not allowed
#endif
CS1633-példa – Ismeretlen #pragma irányelv:
#pragma unknown // CS1633 - "unknown" is not a valid pragma
CS8996 példa – A szó szerinti karaktersorozatok nem engedélyezettek az előfeldolgozó utasításokban:
// CS8996.cs
#pragma checksum """raw_string""" "{406EA660-64CF-4C82-B6F0-42D48172A799}" "hash" // CS8996
class Test { }
A hiba kijavításához használjon egy normál sztringkonstanst:
#pragma checksum "filename.cs" "{406EA660-64CF-4C82-B6F0-42D48172A799}" "hash" // OK
class Test { }
A hibák kijavításához győződjön meg arról, hogy az előfeldolgozási irányelvek az előfeldolgozási irányelvek dokumentációjában leírt helyes szintaxisszabályokat követik.
#error és #warning direktíva hiba
- CS1029: #error: "text"
- CS1030: #warning: "text"
- CS1634: Várható letiltás vagy visszaállítás
- CS1635: A figyelmeztetési kód nem állítható vissza, mert globálisan le lett tiltva
- CS1691: A "szám" nem érvényes figyelmeztető szám
- CS1692: Érvénytelen szám
Ezek a hibák akkor fordulnak elő, amikor a fordító feldolgozza a #error, #warning és #pragma warning irányelveket. Ezek az irányelvek lehetővé teszik egyéni hibaüzenetek és figyelmeztető üzenetek generálására a fordítás és a figyelmeztetési viselkedés szabályozása során.
A CS1029 megjeleníti az irányelvvel definiált hiba szövegét #error :
// CS1029.cs
class Sample
{
static void Main()
{
#error Let's give an error here // CS1029
}
}
A fordítás a következő kimenetet hozza létre:
example.cs(9,8): error CS1029: #error: 'Let's give an error here // CS1029 '
A CS1030 megjeleníti az irányelvvel definiált figyelmeztetés szövegét #warning :
// CS1030.cs
class Sample
{
static void Main()
{
#warning Let's give a warning here
}
}
A fordítás a következő kimenetet hozza létre:
example.cs(6,16): warning CS1030: #warning: 'Let's give a warning here'
A CS1634 akkor fordul elő, ha egy #pragma warning záradék hibásan van formázva, például ha a letiltás vagy a visszaállítás nincs megadva:
// CS1634.cs
// compile with: /W:1
#pragma warning // CS1634
// Try this instead:
// #pragma warning disable 0219
class MyClass
{
public static void Main()
{
}
}
A CS1635 akkor fordul elő, ha a /nowarn parancssori opció vagy projekt beállítást használ egy figyelmeztetés globális letiltására, de a #pragma warning restore kapcsolót a figyelmeztetés visszaállítására használja:
// CS1635.cs
// compile with: /w:1 /nowarn:162
enum MyEnum {one=1,two=2,three=3};
class MyClass
{
public static void Main()
{
#pragma warning disable 162
if (MyEnum.three == MyEnum.two)
System.Console.WriteLine("Duplicate");
#pragma warning restore 162 // CS1635
}
}
A CS1691 akkor fordul elő, ha az #pragma warning irányelvnek átadott szám nem érvényes figyelmeztető szám:
// CS1691.cs
public class C
{
int i = 1;
public static void Main()
{
C myC = new C();
#pragma warning disable 151 // CS1691
// Try the following line instead:
// #pragma warning disable 1645
myC.i++;
#pragma warning restore 151 // CS1691
// Try the following line instead:
// #pragma warning restore 1645
}
}
A CS1692 akkor fordul elő, ha az előfeldolgozási irányelvekben #pragma#line szereplő szám érvénytelen, mert túl nagy, nem megfelelő formátumban van, vagy érvénytelen karaktereket tartalmaz:
// CS1692.cs
#pragma warning disable a // CS1692
// Try this instead:
// #pragma warning disable 1691
class A
{
static void Main()
{
}
}
Ezek az irányelvek olyan feltételes fordítási helyzetekben hasznosak, amikor a fejlesztőket a kód meghatározott feltételeiről szeretné értesíteni, vagy szabályozni, hogy mely figyelmeztetések jelenjenek meg a fordítás során. Az irányelvek használatával kapcsolatos további információkért tekintse meg az előfeldolgozási irányelvek dokumentációját és #pragma figyelmeztetést.
#line és fájlirányelmezési hibák
- CS1560: Az előfeldolgozási irányelvhez megadott fájlnév érvénytelen. A fájlnév túl hosszú vagy nem érvényes fájlnév
- CS1576: A #line irányelvhez megadott sorszám hiányzik vagy érvénytelen
- CS1578: Fájlnév, egysoros megjegyzés vagy sorvég várható
- CS1694: Az előfeldolgozási irányelvhez megadott fájlnév érvénytelen. A fájlnév túl hosszú vagy nem érvényes fájlnév
- CS1695: Érvénytelen #pragma ellenőrzőösszeg szintaxisa; a #pragma ellenőrzőösszeg formátuma "fájlnév" "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" "XXXX..." legyen
- CS1709: Az előfeldolgozási direktívához megadott fájlnév üres
- CS8938: A #line irányelv értéke hiányzik vagy a tartományon kívül esik
- CS8939: A #line irányelv zárópozíciójának nagyobbnak vagy egyenlőnek kell lennie a kezdő pozíciónál
- CS9028: A #line span direktíva szóközt igényel az első zárójel előtt, a karakter eltolása előtt és a fájlnév előtt
Ezek a hibák az irányelv vagy a #line fájlhoz kapcsolódó előfeldolgozási irányelvek helytelen használatát jelzik. A gyakori kiváltó okok között a következőket találjuk:
- Érvénytelen vagy hiányzó fájlnevek (CS1560, CS1694, CS1709).
- Helytelen sorszámformátum vagy értékek (CS1576, CS8938, CS8939).
- Hiányzik a fájlnevek és megjegyzések megfelelő szintaxisa (CS1578).
- Hibás szintaxis
#pragma checksum(CS1695). - Nem megfelelő térköz a span irányelvekben
#line(CS9028).
CS1560/CS1694 példa – Érvénytelen fájlnév van megadva:
#line 100 "MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890.txt" // CS1560/CS1694 - filename too long
CS1576-példa – Hiányzó vagy érvénytelen sorszám:
#line "abc.sc" // CS1576 - missing line number
#line abc "file.cs" // CS1576 - invalid line number format
CS1578-példa – Fájlnév, megjegyzés vagy sorvég várható:
#line 101 abc.cs // CS1578 - filename not quoted
CS1695-példa – Érvénytelen #pragma ellenőrzőösszeg szintaxisa:
#pragma checksum "12345" // CS1695 - missing GUID and checksum
CS1709-példa – Üres fájlnév:
#pragma checksum "" "{406EA660-64CF-4C82-B6F0-42D48172A799}" "" // CS1709 - empty filename
CS8938 példa – #line irányelv értéke hiányzik vagy tartományon kívül esik:
#line // CS8938 - missing value
#line 0 // CS8938 - out of range (must be 1-16,707,566)
CS8939 példa – hibás #line pozíció végének:
#line (1, 10) - (1, 5) "file.cs" // CS8939 - end column < start column
CS9028 példa – #line tartomány direktíva hézag:
#line(1, 1) - (1, 10)"file.cs" // CS9028 - missing spaces
A hibák kijavításához győződjön meg arról, hogy az #line irányelvek és a fájlhoz kapcsolódó előfeldolgozási irányelvek a megfelelő szintaxist követik az előfeldolgozási irányelvek dokumentációjában leírtak szerint.
A fájlalapú alkalmazásokra vonatkozó irányelvek helytelen használata
-
CS9297:
#:az irányelvek nem lehetnek az első token után a fájlban -
CS9298:
#:az irányelvek csak fájlalapú programokban használhatók (-features:FileBasedProgram) -
CS9299: A
#:irányelvek nem lehetnek a#ifirányelv után -
CS9314:
#!az irányelvek csak szkriptekben vagy fájlalapú programokban használhatók
Ezek a hibák azt jelzik, hogy helytelenül használta a #: fájlalapú alkalmazásokra vonatkozó irányelveket. Ezen irányelvek szintaxisáról a fájlalapú alkalmazásokról szóló szakaszban, az előfeldolgozási irányelvekről szóló cikkben talál további információt. A fájlalapú alkalmazások megismeréséhez kövesse a fájlalapú alkalmazásokra vonatkozó oktatóanyagot .
A fájl script.cs irányelveket tartalmaz
A következő hibák script.cs szintaxist jeleznek egy lefordított C#-fájlban:
- CS7009: Nem lehet használni a #r-t a fájl első szava után
- CS7010: Idézett fájlnév várható
- CS7011: #r csak szkriptekben engedélyezett
- CS8097: #load csak szkriptekben engedélyezett
Ezek az irányelvek nem támogatottak a lefordított C#-ban. El kell távolítania őket, vagy script.cs kell használnia.