Skip to main content

Enterprise Server 3.15 в настоящее время доступен в качестве кандидата на выпуск.

Непредвиденное сбой компилятора C#

Если компиляция MSBuild C# неожиданно завершается ошибкой, может потребоваться изменить файл проекта приложения.

Об этих ошибках

Трассировщик трассировки CodeQL внедряет некоторые флаги в вызов компилятора C#, чтобы гарантировать, что каждый компонент построен и включен в базу данных CodeQL, что может привести к созданию кода C# по-разному, что ожидается во время анализа CodeQL. См. раздел "Сканирование кода CodeQL для скомпилированных языков".

/p:EmitCompilerGeneratedFiles=true является одним из внедренных свойств и выдает созданные компилятором файлы во время процесса сборки. Этот параметр приводит к созданию дополнительных файлов компилятора, которые используются для поддержки таких функций, как улучшенная поддержка регулярных выражений, сериализация и создание представления веб-приложения. Эти созданные артефакты обычно не записываются на диск компилятором, но настраивают параметр принудительной true записи файлов на диск, и поэтому средство извлечения может обрабатывать файлы.

Для некоторых устаревших проектов и проектов, использующих .sqlproj файлы, можно увидеть, что внедренное /p:EmitCompilerGeneratedFiles=true свойство приводит к непредвиденным проблемам msbuild.

Подтверждение причины проблемы

Если вы задали флаг "обрабатывать предупреждения как ошибки", msbuild будет возникать ошибка, которая приведет к сбою извлечения.

Устранение проблемы

Необходимо добавить элемент в <CompilerGeneratedFilesOutputPath> файл проекта приложения. Дополнительные сведения см. в разделе "Общие сведения о файле проекта" в Microsoft Learn.