Skip to main content

Enterprise Server 3.15 está disponível no momento como versão release candidate.

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 obter mais informações, consulte "Noções básicas sobre o arquivo de projeto" no Microsoft Learn.