Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Kompilatorn genererar följande fel för felaktig användning av förprocessordirektiv:
- CS1024: Förprocessordirektivet förväntas
- CS1025: Enradskommentar eller slut på rad förväntas
- CS1027: #endif direktiv förväntas
- CS1028: Oväntat förprocessordirektiv
- CS1029: #error: "text"
- CS1030: #warning: "text"
- CS1032: Det går inte att definiera/odefiniera förprocessorsymboler efter den första token i filen
- CS1038: direktiv #endregion förväntas
- CS1040: Förprocessordirektiv måste visas som det första icke-blankstegstecknet på en rad
- CS1517: Ogiltigt preprocessoruttryck
- CS1560: Ogiltigt filnamn som angetts för förprocessordirektivet. Filnamnet är för långt eller inte ett giltigt filnamn
- CS1576: Radnumret som angetts för #line direktiv saknas eller är ogiltigt
- CS1578: Filnamn, enradskommentar eller radslut förväntas
- CS1633: Okänt #pragma direktiv
- CS1634: Förväntas inaktivera eller återställa
- CS1635: Det går inte att återställa varningskoden eftersom den har inaktiverats globalt
- CS1691: "number" är inte ett giltigt varningsnummer
- CS1692: Ogiltigt tal
- CS1694: Ogiltigt filnamn som angetts för förprocessordirektivet. Filnamnet är för långt eller inte ett giltigt filnamn
- CS1695: Ogiltig #pragma kontrollsummasyntax; bör vara #pragma kontrollsumman "filnamn" "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" "XXXX..."
- CS1696: Enradskommentar eller slutpunkt för rad förväntas
- CS1709: Filnamnet som anges för förprocessordirektivet är tomt
- CS7009: Det går inte att använda #r efter den första token i filen
- CS7010: Det angivna filnamnet förväntas
- CS7011: #r tillåts endast i skript
- CS8097: #load tillåts endast i skript
- CS8098: Det går inte att använda #load efter den första token i filen
- CS8938: Värdet för #line-direktivet saknas eller ligger inom intervallet
- CS8939: Slutpositionen för #line-direktivet måste vara större än eller lika med startpositionen
- CS8996: Råsträngliteraler tillåts inte i förprocessordirektiv
- CS9028: #line span-direktivet kräver utrymme före den första parentesen, före teckenförskjutningen och före filnamnet
- 
              
              CS9297: #:direktiv kan inte vara efter första token i filen
- 
              
              CS9298: #:direktiv kan endast användas i filbaserade program (-features:FileBasedProgram)
- 
              
              CS9299: #:direktiv får inte placeras efter#ifdirektiv
- 
              
              CS9314: #!direktiv kan endast användas i skript eller filbaserade program
Ogiltig preprocessor-direktivsyntax
- CS1024: Förprocessordirektiv förväntas
- CS1025: Enradskommentar eller slut på rad förväntas
- CS1027: #endif-direktiv förväntat
- CS1028: Oväntat förprocessordirektiv
- CS1038: #endregion direktiv förväntas
- CS1040: Förprocessordirektiv måste visas som det första icke-blankstegstecknet på en rad
- CS1517: Ogiltigt preprocessoruttryck
- CS1633: Oidentifierad #pragma-direktiv
- CS1696: Enradskommentar eller slutpunkt för rad förväntas
- CS8996: Råsträngliteraler tillåts inte i förprocessordirektiv
Dessa fel indikerar att du använde ogiltig syntax för preprocessor-direktiv. Vanliga orsaker är
- Använda ett okänt direktiv efter #(CS1024, CS1633).
- Inklusive flerradskommentarer på direktivrader (CS1025, CS1696).
- Använda direktiv på oväntade platser (CS1028).
- Nödvändiga matchningsdirektiv saknas (CS1027, CS1038).
- Att inte definiera eller odefiniera symboler som den första token i filen (CS1032)
- Att inte placera direktivet som det första tecknet på en rad (CS1040).
- Använda ogiltiga uttryck i villkorlig kompilering (CS1517).
- Använda råa strängliteraler i förprocessordirektiv (CS8996).
CS1024-exempel – Förprocessordirektivet förväntas:
#import System   // CS1024 - "import" is not a valid directive
CS1025-exempel – Enradskommentar eller slutpunkt för rad förväntas:
#if true /* hello  
*/   // CS1025 - multiline comment not allowed
#endif
CS1027-exempel – #endif direktiv förväntas:
#if true   // CS1027 - missing #endif
class Test { }
CS1028-exempel – Oväntat förprocessordirektiv:
#endif   // CS1028 - no matching #if
              CS1032-exempel – #define och #undef förprocessordirektiv måste visas före andra token:
/* Comment */ 
#define X   // CS1032 - directive not first token in file
CS1038-exempel – #endregion direktiv förväntas:
#region testing
class Test { }
// CS1038 - missing #endregion
CS1040-exempel – Förprocessordirektiv måste visas som det första icke-blankstegstecknet:
/* Comment */ #define X   // CS1040 - directive not first on line
CS1517-exempel – Ogiltigt preprocessoruttryck:
#if 1           // CS1517 - numeric literals not allowed
#endif
#if ~symbol     // CS1517 - bitwise operators not allowed  
#endif
CS1633-exempel – Okänt #pragma direktiv:
#pragma unknown  // CS1633 - "unknown" is not a valid pragma
CS8996-exempel – Råsträngliteraler tillåts inte i förprocessordirektiv:
// CS8996.cs
#pragma checksum """raw_string""" "{406EA660-64CF-4C82-B6F0-42D48172A799}" "hash"  // CS8996
class Test { }
Åtgärda det här felet genom att använda en vanlig strängliteral:
#pragma checksum "filename.cs" "{406EA660-64CF-4C82-B6F0-42D48172A799}" "hash"  // OK
class Test { }
Åtgärda dessa fel genom att se till att dina förprocessordirektiv följer rätt syntaxregler som beskrivs i dokumentationen för förprocessordirektiv.
#error och #warning direktivfel
- CS1029: #error: "text"
- CS1030: #warning: "text"
- CS1634: Förväntas inaktivera eller återställa
- CS1635: Det går inte att återställa varningskoden eftersom den har inaktiverats globalt
- CS1691: "number" är inte ett giltigt varningsnummer
- CS1692: Ogiltigt tal
Dessa fel uppstår när kompilatorn bearbetar #error, #warningoch #pragma warning direktiv. Med de här direktiven kan du generera anpassade fel- och varningsmeddelanden under kompilering och kontroll av varningsbeteende.
              CS1029 visar texten för ett fel som definierats med #error direktivet:
// CS1029.cs
class Sample
{
   static void Main()
   {
      #error Let's give an error here   // CS1029
   }
}
Kompilering ger följande utdata:
example.cs(9,8): error CS1029: #error: 'Let's give an error here   // CS1029  '
              CS1030 visar texten i en varning som definierats med #warning direktivet:
// CS1030.cs
class Sample
{
   static void Main()
   {
      #warning Let's give a warning here
   }
}
Kompilering ger följande utdata:
example.cs(6,16): warning CS1030: #warning: 'Let's give a warning here'
              CS1634 inträffar när en #pragma warning sats är dåligt utformad, till exempel när inaktivera eller återställa utelämnas:
// CS1634.cs
// compile with: /W:1
#pragma warning   // CS1634
// Try this instead:
// #pragma warning disable 0219
class MyClass
{
  public static void Main()
  {
  }
}
              CS1635 inträffar när du använder kommandoradsalternativet eller projektinställningen /nowarn för att inaktivera en varning globalt, men använder #pragma warning restore för att försöka återställa varningen:
// 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
    }
}
              CS1691 inträffar när ett nummer som skickas till #pragma warning direktivet inte är ett giltigt varningsnummer:
// 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
    }
}
              CS1692 inträffar när ett tal i förprocessordirektiv såsom #pragma och #line är ogiltigt om det är för stort, har fel format eller innehåller ogiltiga tecken:
// CS1692.cs
#pragma warning disable a  // CS1692
// Try this instead:
// #pragma warning disable 1691
class A
{
    static void Main()
    {
    }
}
Dessa direktiv är användbara för scenarier med villkorsstyrd kompilering där du vill varna utvecklare om specifika villkor i koden eller styra vilka varningar som visas under kompileringen. Mer information om hur du använder dessa direktiv finns i dokumentationen om förprocessordirektiv och #pragma varning.
              #line och fildirektivsfel
- CS1560: Ogiltigt filnamn som angetts för förprocessordirektivet. Filnamnet är för långt eller inte ett giltigt filnamn
- CS1576: Radnumret som anges för #line-direktivet saknas eller är ogiltigt
- CS1578: Filnamn, enradskommentar eller radslut förväntas
- CS1694: Ogiltigt filnamn som angetts för förprocessordirektivet. Filnamnet är för långt eller inte ett giltigt filnamn
- CS1695: Ogiltig #pragma kontrollsummasyntax. Bör vara #pragma kontrollsumman "filnamn" {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" "XXXX..."
- CS1709: Filnamnet som anges för förprocessordirektivet är tomt
- CS8938: Värdet för #line-direktivet saknas eller ligger inom intervallet
- CS8939: Slutpositionen för #line-direktivet måste vara större än eller lika med startpositionen
- CS9028: #line span-direktivet kräver utrymme före den första parentesen, före teckenförskjutningen och före filnamnet
Dessa fel indikerar felaktig användning av #line direktivet eller filrelaterade förprocessordirektiv. Vanliga orsaker är
- Ogiltiga eller saknade filnamn (CS1560, CS1694, CS1709).
- Felaktigt radnummerformat eller -värden (CS1576, CS8938, CS8939).
- Rätt syntax saknas för filnamn och kommentarer (CS1578).
- 
              #pragma checksumFelaktig syntax (CS1695).
- Felaktigt avstånd i #linespan-direktiv (CS9028).
CS1560/CS1694-exempel – Ogiltigt filnamn har angetts:
#line 100 "MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890.txt"   // CS1560/CS1694 - filename too long
CS1576-exempel – Radnummer saknas eller är ogiltigt:
#line "abc.sc"         // CS1576 - missing line number
#line abc "file.cs"    // CS1576 - invalid line number format
CS1578-exempel – Filnamn, kommentar eller radslut förväntas:
#line 101 abc.cs   // CS1578 - filename not quoted
CS1695-exempel – Ogiltig #pragma kontrollsummasyntax:
#pragma checksum "12345"  // CS1695 - missing GUID and checksum
CS1709-exempel – Tomt filnamn:
#pragma checksum "" "{406EA660-64CF-4C82-B6F0-42D48172A799}" ""  // CS1709 - empty filename
CS8938-exempel – #line direktivvärde saknas eller ligger utom intervallet:
#line   // CS8938 - missing value
#line 0  // CS8938 - out of range (must be 1-16,707,566)
CS8939-exempel – #line slutpositionsfel:
#line (1, 10) - (1, 5) "file.cs"  // CS8939 - end column < start column
CS9028-exempel – #line avstånd mellan direktiv:
#line(1, 1) - (1, 10)"file.cs"  // CS9028 - missing spaces
Åtgärda dessa fel genom att se till att dina #line direktiv och filrelaterade preprocessordirektiv följer rätt syntax enligt beskrivningen i dokumentationen om förprocessordirektiv.
Felaktig användning av filbaserade appdirektiv
- 
              CS9297: #:direktiven kan inte vara efter första token i filen
- 
              CS9298: #:direktiv kan endast användas i filbaserade program (-features:FileBasedProgram)
- 
              CS9299: #:-direktiven får inte förekomma efter#if-direktiven
- 
              CS9314: #!direktiv kan endast användas i skript eller filbaserade program
Dessa fel indikerar att du använde direktiven #: för en filbaserad app felaktigt. Du kan läsa mer om syntaxen för dessa direktiv i artikeln om förprocessordirektiv i avsnittet om filbaserade appar. Du kan också utforska filbaserade appar genom att följa självstudien om filbaserade appar.
Filen innehåller script.cs direktiv
Följande fel indikerar script.cs syntax i en kompilerad C#-fil:
- CS7009: Det går inte att använda #r efter den första token i filen
- CS7010: Det angivna filnamnet förväntas
- CS7011: #r tillåts endast i skript
- CS8097: #load tillåts endast i skript
Dessa direktiv stöds inte i kompilerad C#. Du måste ta bort dem eller använda script.cs.