跳至主要内容

C# 编译器意外失败

如果您的 MSBuild C# 编译意外失败,您可能需要修改应用程序项目文件。

关于这些错误

CodeQL 跟踪器将一些标志注入到 C# 编译器调用中,以确保每个组件都构建并包含在 CodeQL 数据库中,这可能导致您的 C# 代码在 CodeQL 分析期间的构建方式与您的预期不同。请参阅“编译语言的 CodeQL 代码扫描”。

/p:EmitCompilerGeneratedFiles=true 是注入的属性之一,它在构建过程中发出编译器生成的 文件。此选项会导致编译器生成用于支持改进的正则表达式支持、序列化和 Web 应用程序视图生成等功能的附加文件。这些生成的工件通常不会由编译器写入磁盘,但将该选项设置为 true 会强制将文件写入磁盘,以便提取器可以处理这些文件。

对于某些旧版项目和使用 .sqlproj 文件的项目,您可能会发现注入的 /p:EmitCompilerGeneratedFiles=true 属性会导致 msbuild 出现意外问题。

确认问题的原因

如果已设置“将警告视为错误”标志,则 msbuild 将产生错误,这将导致提取失败。

解决问题

您应该将 <CompilerGeneratedFilesOutputPath> 元素添加到应用程序的项目文件中。有关更多信息,请参阅 Microsoft Learn 中的“了解项目文件”。