Skip to main content

Esta versão do GitHub Enterprise Server foi descontinuada em 2024-09-25. Nenhum lançamento de patch será feito, mesmo para questões críticas de segurança. Para obter melhor desempenho, segurança aprimorada e novos recursos, atualize para a última versão do GitHub Enterprise Server. Para obter ajuda com a atualização, entre em contato com o suporte do GitHub Enterprise.

Compilador C# falhando de forma inesperada

Se a compilação C# do MSBuild estiver falhando inesperadamente, talvez seja necessário modificar o arquivo de projeto do aplicativo.

Sobre os erros

O rastreador do CodeQL injeta determinados sinalizadores na invocação do compilador C# para garantir que cada componente seja compilado e incluído no banco de dados CodeQL, o que pode fazer com que o código C# seja compilado de uma forma diferente do que você espera durante a análise do CodeQL. Confira Verificação de código do CodeQL para linguagens compiladas.

/p:EmitCompilerGeneratedFiles=true é uma das propriedades injetadas e emite arquivos gerados pelo compilador durante o processo de compilação. Essa opção faz com que o compilador gere arquivos adicionais que são usados para oferecer suporte a recursos como suporte aprimorado a expressões regulares, serialização e geração de exibição de aplicativo Web. Esses artefatos gerados normalmente não são gravados no disco pelo compilador, mas definir a opção como true força a gravação dos arquivos no disco e, portanto, o extrator pode processar os arquivos.

Para alguns projetos herdados e projetos que usam arquivos .sqlproj, você pode ver que a propriedade /p:EmitCompilerGeneratedFiles=true injetada causa problemas inesperados com o msbuild.

Confirmar a causa do problema

Se você tiver definido o sinalizador "tratar avisos como erros", o msbuild produzirá um erro, o que fará com que a extração falhe.

Corrigir o problema

Você deve adicionar o elemento <CompilerGeneratedFilesOutputPath> ao arquivo de projeto do aplicativo. Para saber mais, confira Noções básicas sobre o arquivo de projeto no Microsoft Learn.