Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O compilador gera os seguintes erros para 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: 'text'
- CS1030: #warning: 'text'
- CS1032: Não é possível definir/indefinir símbolos de 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 de espaço não 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. O 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 de #pragma não reconhecida
- CS1634: Desabilitação ou restauração esperada
- CS1635: Não é possível restaurar o aviso 'código de aviso' porque ele foi desabilitado globalmente
- CS1691: 'number' não é um número de alerta válido
- CS1692: Número inválido
- CS1694: nome de arquivo inválido especificado para a diretiva de pré-processador. O nome do arquivo é muito longo ou não é um nome de arquivo válido
- CS1695: Sintaxe inválida de #pragma checksum; deve ser #pragma checksum "nome do arquivo" "{XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX}" "XXXX..."
- CS1696: Comentário de linha única ou fim de linha esperado
- CS1709: O 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 do arquivo entre aspas 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 de abrangência #line requer espaço antes do primeiro parêntese, antes do deslocamento do caractere e antes do nome do arquivo
-
CS9297:
#:as diretivas não podem ser após o primeiro token no arquivo -
CS9298:
#:as diretivas só podem ser usadas em programas baseados em arquivo (-features:FileBasedProgram) -
CS9299:
#:as diretivas não podem ser após a#ifdiretiva -
CS9314:
#!as diretivas só podem ser usadas em scripts ou programas baseados em arquivo
Sintaxe de diretiva de pré-processador inválida
- CS1024: Diretiva de pré-processador esperada
- CS1025: É esperado um comentário de linha única ou fim de linha
- CS1027: diretiva #endif esperada
- CS1028: Diretiva de pré-processador inesperada
- CS1038: diretiva #endregion esperada
- CS1040: as diretivas de pré-processador devem aparecer como o primeiro caractere de espaço não branco em uma linha
- CS1517: Expressão de pré-processador inválida
- CS1633: diretiva de #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 mais comuns incluem:
- Usando uma diretiva não reconhecida após
#(CS1024, CS1633). - Incluindo comentários de várias linhas nas linhas de diretivas (CS1025, CS1696).
- Usando diretivas em locais inesperados (CS1028).
- Diretivas correspondentes obrigatórias ausentes (CS1027, CS1038).
- Não definir ou anular a definição de símbolos como o primeiro token no arquivo (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 textos literais brutos em diretivas de pré-processador (CS8996).
Exemplo de CS1024 – Diretiva de pré-processador esperada:
#import System // CS1024 - "import" is not a valid directive
Exemplo de CS1025 – comentário de uma única linha ou fim de linha esperado:
#if true /* hello
*/ // CS1025 - multiline comment not allowed
#endif
Exemplo de CS1027 – diretiva #endif esperada:
#if true // CS1027 - missing #endif
class Test { }
Exemplo de CS1028 – Diretiva de pré-processador inesperada:
#endif // CS1028 - no matching #if
Exemplo de CS1032 – #define e #undef diretivas de pré-processador devem aparecer antes de outros tokens:
/* Comment */
#define X // CS1032 - directive not first token in file
Exemplo de CS1038 – diretiva #endregion esperada:
#region testing
class Test { }
// CS1038 - missing #endregion
Exemplo de CS1040 – as diretivas de pré-processador devem aparecer como o primeiro caractere de espaço não branco:
/* Comment */ #define X // CS1040 - directive not first on line
Exemplo de 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 string bruta não são permitidos em diretivas do pré-processador:
// CS8996.cs
#pragma checksum """raw_string""" "{406EA660-64CF-4C82-B6F0-42D48172A799}" "hash" // CS8996
class Test { }
Para corrigir esse erro, use uma constante de string regular:
#pragma checksum "filename.cs" "{406EA660-64CF-4C82-B6F0-42D48172A799}" "hash" // OK
class Test { }
Para corrigir esses erros, verifique se suas diretivas de pré-processador seguem as regras de sintaxe corretas descritas na documentação de diretivas de pré-processador.
erros de diretiva #error e #warning
- CS1029: #error: 'text'
- CS1030: #warning: 'text'
- CS1634: Desabilitação ou restauração esperada
- CS1635: Não é possível restaurar o aviso 'código de aviso' porque ele foi desabilitado globalmente
- CS1691: 'number' não é um código de aviso válido
- CS1692: Número inválido
Esses erros ocorrem quando o compilador processa #error#warninge #pragma warning diretivas. Essas diretivas permitem que você gere mensagens de erro e aviso personalizadas durante o comportamento de aviso de compilação e controle.
O 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 saída a seguir:
example.cs(9,8): error CS1029: #error: 'Let's give an error here // CS1029 '
O 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 saída a seguir:
example.cs(6,16): warning CS1030: #warning: 'Let's give a warning here'
O CS1634 ocorre quando uma cláusula #pragma warning é mal formada, como quando desabilitar ou restaurar é omitido.
// CS1634.cs
// compile with: /W:1
#pragma warning // CS1634
// Try this instead:
// #pragma warning disable 0219
class MyClass
{
public static void Main()
{
}
}
O CS1635 ocorre quando você usa a opção /nowarn de linha de comando ou a configuração do projeto para desabilitar 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
}
}
O 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, está 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 das 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. O 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 uma linha ou fim de linha esperado
- CS1694: nome de arquivo inválido especificado para a diretiva de pré-processador. O nome do arquivo é muito longo ou não é um nome de arquivo válido
- CS1695: Sintaxe inválida de #pragma checksum; deve ser #pragma checksum "nome do arquivo" "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" "XXXX..."
- CS1709: O nome do arquivo especificado para a diretiva de pré-processador está vazio
- 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
- CS9028: A diretiva de abrangência #line requer espaço antes do primeiro parêntese, antes do deslocamento do caractere e antes do nome do arquivo
Esses erros indicam o uso incorreto da diretiva ou das #line diretivas de pré-processador relacionadas ao arquivo. As causas mais comuns incluem:
- Nomes de arquivo inválidos ou ausentes (CS1560, CS1694, CS1709).
- Formato ou valores de número de linha incorretos (CS1576, CS8938, CS8939).
- Sintaxe adequada ausente para nomes de arquivo e comentários (CS1578).
- Sintaxe malformada
#pragma checksum(CS1695). - Espaçamento inadequado em
#linediretivas de intervalo (CS9028).
Exemplo de CS1560/CS1694 – nome de arquivo inválido especificado:
#line 100 "MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890MyFile1234567890.txt" // CS1560/CS1694 - filename too long
Exemplo de 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 de CS1578 – Nome do arquivo, comentário ou fim de linha esperado:
#line 101 abc.cs // CS1578 - filename not quoted
Exemplo de CS1695 – Sintaxe inválida de #pragma checksum:
#pragma checksum "12345" // CS1695 - missing GUID and checksum
Exemplo de CS1709 – Nome de arquivo vazio:
#pragma checksum "" "{406EA660-64CF-4C82-B6F0-42D48172A799}" "" // CS1709 - empty filename
Exemplo CS8938 - valor da diretiva #line ausente ou fora do intervalo:
#line // CS8938 - missing value
#line 0 // CS8938 - out of range (must be 1-16,707,566)
Exemplo de CS8939: erro na posição final de #line:
#line (1, 10) - (1, 5) "file.cs" // CS8939 - end column < start column
Exemplo CS9028 – espaçamento da diretiva de alcance #line:
#line(1, 1) - (1, 10)"file.cs" // CS9028 - missing spaces
Para corrigir esses erros, verifique se suas #line diretivas e diretivas de pré-processador relacionadas ao arquivo seguem a sintaxe correta, conforme descrito na documentação de diretivas de pré-processador.
Uso incorreto de diretivas de aplicativos baseados em arquivo
-
CS9297:
#:as diretivas não podem ser após o primeiro token no arquivo -
CS9298:
#:as diretivas só podem ser usadas em programas baseados em arquivo (-features:FileBasedProgram) -
CS9299:
#:as diretivas não podem ser após a#ifdiretiva -
CS9314:
#!as 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 arquivos seguindo o tutorial sobre aplicativos baseados em arquivo.
O arquivo contém diretivas de script.cs
Os erros a seguir 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 do arquivo entre aspas esperado
- CS7011: #r só é permitido em scripts
- CS8097: #load só é permitido em scripts
Essas diretivas não têm suporte no C# compilado. Você deve removê-los ou usar script.cs.