Skip to main content

Échec inattendu du compilateur C#

Si votre compilation MSBuild C# échoue de façon inattendue, vous devrez peut-être modifier le fichier projet de votre application.

À propos de ces erreurs

Le traceur CodeQL injecte certains indicateurs dans l’appel du compilateur C# pour vous assurer que chaque composant est généré et inclus dans la base de données CodeQL. En conséquence, votre code C# peut être généré d’une manière différente de vos attentes pendant l’analyse CodeQL. Consultez « Analyse du code CodeQL pour les langages compilés ».

/p:EmitCompilerGeneratedFiles=true est l’une des propriétés injectées et émet des fichiers générés par le compilateur pendant le processus de génération. Cette option permet au compilateur de générer des fichiers supplémentaires, utilisés pour prendre en charge des fonctionnalités telles que la prise en charge améliorée des expressions régulières, la sérialisation et la génération de vues d’applications web. Ces artefacts générés ne sont généralement pas écrits sur le disque par le compilateur, mais règlent l’option sur true pour forcer l’écriture des fichiers sur disque, pour que l’extracteur puisse traiter les fichiers.

Pour certains projets hérités et les projets qui utilisent des fichiers .sqlproj, vous pouvez voir que la propriété /p:EmitCompilerGeneratedFiles=true injectée provoque des problèmes inattendus avec msbuild.

Confirmation de la cause du problème

Si vous avez défini l’indicateur « Traiter les avertissements comme des erreurs », msbuild produira une erreur, ce qui entraînera l’échec de l’extraction.

Résolution du problème

Vous devez ajouter l’élément <CompilerGeneratedFilesOutputPath> au fichier projet de l’application. Pour plus d’informations, consultez « Présentation des fichiers projet » dans Microsoft Learn.