Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O compilador gera os seguintes erros para o uso incorreto de diretivas de pré-processador:
- CS1024: Diretiva de pré-processador esperada
- CS1025: Comentário de linha única ou fim de linha esperado
- CS1027: Diretiva #endif esperada
- CS1028: Diretiva de pré-processador inesperada
- CS1029: #error: «texto»
- CS1030: #warning: 'texto'
- CS1032: Não é possível definir/desdefinir símbolos do pré-processador após o primeiro token no arquivo
- CS1038: diretiva #endregion esperada
- CS1040: As diretivas de pré-processador devem aparecer como o primeiro caractere sem espaço em branco em uma linha
- CS1517: Expressão de pré-processador inválida
- CS1560: Nome de arquivo inválido especificado para a diretiva de pré-processador. Nome do arquivo é muito longo ou não é um nome de arquivo válido
- CS1576: O número de linha especificado para #line diretiva está ausente ou é inválido
- CS1578: Nome do arquivo, comentário de linha única ou fim de linha esperado
- CS1633: Diretiva #pragma não reconhecida
- CS1634: Desabilitação ou restauração esperada
- CS1635: Não é possível restaurar o aviso 'código de aviso' porque foi desativado globalmente
- CS1691: 'número' não é um número de aviso válido
- CS1692: Número inválido
- CS1694: Nome de arquivo inválido especificado para a diretiva de pré-processador. Nome do arquivo é muito longo ou não é um nome de arquivo válido
- CS1695: Sintaxe de #pragma checksum inválida; deve ser #pragma checksum "filename" "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" "XXXX..."
- CS1696: Comentário de linha única ou fim de linha esperado
- CS1709: Nome do arquivo especificado para a diretiva de pré-processador está vazio
- CS7009: Não é possível usar #r após o primeiro token no arquivo
- CS7010: Nome de arquivo citado esperado
- CS7011: #r só é permitido em scripts
- CS8097: #load só é permitido em scripts
- CS8098: Não é possível usar #load após o primeiro token no arquivo
- CS8938: O valor da diretiva #line está ausente ou fora do intervalo
- CS8939: A posição final da diretiva #line deve ser maior ou igual à posição inicial
- CS8996: Literais de cadeia de caracteres brutos não são permitidos em diretivas de pré-processador
- CS9028: A diretiva #line span requer espaço antes do primeiro parêntese, antes do deslocamento de caracteres e antes do nome do arquivo
-
CS9297:
#:diretivas não podem ser após o primeiro token no arquivo -
CS9298:
#:diretivas só podem ser usadas em programas baseados em arquivo (-features:FileBasedProgram) -
CS9299:
#:as diretivas não podem ser posteriores à#ifdiretiva -
CS9314:
#!diretivas só podem ser usadas em scripts ou programas baseados em arquivo
Sintaxe inválida da diretiva do pré-processador
- CS1024: Diretiva de pré-processador esperada
- CS1025: Comentário de linha única ou fim de linha previsto
- CS1027: #endif diretiva esperada
- CS1028: Diretiva de pré-processador inesperada
- CS1038: Diretiva #endregion esperada
- CS1040: As diretivas de pré-processador devem aparecer como o primeiro caractere sem espaço em branco em uma linha
- CS1517: Expressão de pré-processador inválida
- CS1633: Diretiva #pragma não reconhecida
- CS1696: Comentário de linha única ou fim de linha esperado
- CS8996: Literais de cadeia de caracteres brutos não são permitidos em diretivas de pré-processador
Esses erros indicam que você usou sintaxe inválida para diretivas de pré-processador. As causas comuns incluem:
- Usando uma diretiva não reconhecida depois de
#(CS1024, CS1633). - Incluindo comentários de várias linhas sobre linhas diretivas (CS1025, CS1696).
- Usando diretivas em locais inesperados (CS1028).
- Faltam diretivas de correspondência necessárias (CS1027, CS1038).
- Não definir ou desdefinir símbolos como o primeiro token no ficheiro (CS1032)
- Não colocar a diretiva como o primeiro token em uma linha (CS1040).
- Usando expressões inválidas na compilação condicional (CS1517).
- Usando literais de cadeia de caracteres bruta em diretivas de pré-processador (CS8996).
Exemplo CS1024 - Diretiva de pré-processador esperada:
#import System // CS1024 - "import" is not a valid directive
Exemplo CS1025 - Comentário de linha única ou fim de linha esperado:
#if true /* hello
*/ // CS1025 - multiline comment not allowed
#endif
Exemplo CS1027 - diretiva #endif esperada:
#if true // CS1027 - missing #endif
class Test { }
Exemplo CS1028 - Diretiva de pré-processador inesperada:
#endif // CS1028 - no matching #if
Exemplo CS1032 - #define e #undef as diretivas de pré-processador devem aparecer antes de outros tokens:
/* Comment */
#define X // CS1032 - directive not first token in file
Exemplo CS1038 - espera-se a diretiva #endregion:
#region testing
class Test { }
// CS1038 - missing #endregion
Exemplo CS1040 - As diretivas de pré-processador devem aparecer como o primeiro caractere sem espaço em branco:
/* Comment */ #define X // CS1040 - directive not first on line
Exemplo CS1517 - Expressão de pré-processador inválida:
#if 1 // CS1517 - numeric literals not allowed
#endif
#if ~symbol // CS1517 - bitwise operators not allowed
#endif
Exemplo CS1633 - Diretiva #pragma não reconhecida:
#pragma unknown // CS1633 - "unknown" is not a valid pragma
Exemplo de CS8996 - Literais de cadeia de caracteres brutos não são permitidos em diretivas de pré-processador:
// CS8996.cs
#pragma checksum """raw_string""" "{406EA660-64CF-4C82-B6F0-42D48172A799}" "hash" // CS8996
class Test { }
Para corrigir este erro, utilize um literal de cadeia de caracteres regular:
#pragma checksum "filename.cs" "{406EA660-64CF-4C82-B6F0-42D48172A799}" "hash" // OK
class Test { }
Para corrigir esses erros, verifique se as diretivas do pré-processador seguem as regras de sintaxe corretas descritas na documentação das diretivas do pré-processador.
Erros de diretiva #error e #warning
- CS1029: #error: 'text'
- CS1030: #warning: 'texto'
- CS1634: Desabilitação ou restauração esperada
- CS1635: Não é possível restaurar o aviso 'código de aviso' porque foi desativado globalmente
- CS1691: 'número' não é um número de aviso válido
- CS1692: Número inválido
Esses erros ocorrem quando o compilador processa #error, #warninge #pragma warning diretivas. Essas diretivas permitem gerar mensagens de erro e aviso personalizadas durante a compilação e controlar o comportamento de aviso.
CS1029 exibe o texto de um erro definido com a #error diretiva:
// CS1029.cs
class Sample
{
static void Main()
{
#error Let's give an error here // CS1029
}
}
A compilação produz a seguinte saída:
example.cs(9,8): error CS1029: #error: 'Let's give an error here // CS1029 '
CS1030 exibe o texto de um aviso definido com a #warning diretiva:
// CS1030.cs
class Sample
{
static void Main()
{
#warning Let's give a warning here
}
}
A compilação produz a seguinte saída:
example.cs(6,16): warning CS1030: #warning: 'Let's give a warning here'
CS1634 ocorre quando uma cláusula #pragma warning está mal formada, como quando os termos "desativar" ou "restaurar" são omitidos.
// CS1634.cs
// compile with: /W:1
#pragma warning // CS1634
// Try this instead:
// #pragma warning disable 0219
class MyClass
{
public static void Main()
{
}
}
CS1635 ocorre quando você usa a opção de linha de /nowarn comando ou configuração de projeto para desativar um aviso globalmente, mas use #pragma warning restore para tentar restaurar esse aviso:
// 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 ocorre quando um número passado para a #pragma warning diretiva não é um número de aviso válido:
// 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 ocorre quando um número em diretivas de pré-processador como #pragma e #line é inválido porque é muito grande, no formato errado, ou contém caracteres ilegais:
// CS1692.cs
#pragma warning disable a // CS1692
// Try this instead:
// #pragma warning disable 1691
class A
{
static void Main()
{
}
}
Essas diretivas são úteis para cenários de compilação condicional em que você deseja alertar os desenvolvedores sobre condições específicas no código ou controlar quais avisos são exibidos durante a compilação. Para obter mais informações sobre como usar essas diretivas, consulte a documentação de diretivas de pré-processador e #pragma aviso.
#line e erros de diretiva de arquivo
- CS1560: Nome de arquivo inválido especificado para a diretiva de pré-processador. Nome do arquivo é muito longo ou não é um nome de arquivo válido
- CS1576: O número de linha especificado para #line diretiva está ausente ou é inválido
- CS1578: Nome do arquivo, comentário de linha única ou fim de linha esperado
- CS1694: Nome de arquivo inválido especificado para a diretiva de pré-processador. Nome do arquivo é muito longo ou não é um nome de arquivo válido
- CS1695: Sintaxe inválida do #pragma checksum; deve ser #pragma checksum "filename" "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" "XXXX..."
- CS1709: Nome do arquivo especificado para a diretiva de pré-processador está vazio
- CS8938: O valor da diretiva #line está ausente ou fora do alcance
- CS8939: A posição final da diretiva #line deve ser maior ou igual à posição inicial
- CS9028: A diretiva #line span requer espaço antes do primeiro parêntese, antes do deslocamento de caracteres e antes do nome do arquivo
Esses erros indicam o #line uso incorreto da diretiva ou das diretivas de pré-processador relacionadas a arquivos. As causas comuns incluem:
- Nome de arquivo inválido ou ausente (CS1560, CS1694, CS1709).
- Formato ou valores de número de linha incorretos (CS1576, CS8938, CS8939).
- Falta sintaxe adequada para nomes de arquivos e comentários (CS1578).
- Sintaxe malformada
#pragma checksum(CS1695). - Espaçamento inadequado nas diretivas de span
#line(CS9028).
Exemplo de CS1560/CS1694 - Nome de arquivo inválido especificado:
#line 100 "MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890.txt" // CS1560/CS1694 - filename too long
Exemplo CS1576 - Número de linha ausente ou inválido:
#line "abc.sc" // CS1576 - missing line number
#line abc "file.cs" // CS1576 - invalid line number format
Exemplo CS1578 - Nome do arquivo, comentário ou fim de linha esperado:
#line 101 abc.cs // CS1578 - filename not quoted
Exemplo CS1695 - Sintaxe de soma de verificação #pragma inválida:
#pragma checksum "12345" // CS1695 - missing GUID and checksum
Exemplo CS1709 - Nome do arquivo vazio:
#pragma checksum "" "{406EA660-64CF-4C82-B6F0-42D48172A799}" "" // CS1709 - empty filename
Exemplo CS8938 - valor da diretiva #line em falta ou fora do intervalo:
#line // CS8938 - missing value
#line 0 // CS8938 - out of range (must be 1-16,707,566)
Exemplo CS8939 - erro na posição final do #line:
#line (1, 10) - (1, 5) "file.cs" // CS8939 - end column < start column
Exemplo CS9028 - Espaçamento entre diretivas de #line span:
#line(1, 1) - (1, 10)"file.cs" // CS9028 - missing spaces
Para corrigir esses erros, verifique se as diretivas e as #line diretivas de pré-processador relacionadas a arquivos seguem a sintaxe correta, conforme descrito na documentação de diretivas de pré-processador.
Uso incorreto de diretivas de aplicativos baseados em arquivo
-
CS9297:
#:diretivas não podem ser após o primeiro token no arquivo -
CS9298:
#:diretivas só podem ser usadas em programas baseados em arquivo (-features:FileBasedProgram) -
CS9299:
#:as diretivas não podem ser posteriores à#ifdiretiva -
CS9314:
#!diretivas só podem ser usadas em scripts ou programas baseados em arquivo
Esses erros indicam que você usou as #: diretivas para um aplicativo baseado em arquivo incorretamente. Você pode saber mais sobre a sintaxe dessas diretivas no artigo sobre diretivas de pré-processador na seção sobre aplicativos baseados em arquivo. Ou, você pode explorar aplicativos baseados em arquivo seguindo o tutorial sobre aplicativos baseados em arquivo.
Arquivo contém diretivas para script.cs
Os seguintes erros indicam script.cs sintaxe em um arquivo C# compilado:
- CS7009: Não é possível usar #r após o primeiro token no arquivo
- CS7010: Nome de arquivo citado esperado
- CS7011: #r só é permitido em scripts
- CS8097: #load só é permitido em scripts
Essas diretivas não são suportadas em C# compilado. Você deve removê-los, ou usar script.cs.