You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#8 .NET Core 3.1项目安装VS2022预览版后.g.cs文件报C#9语法错误

根因说明

该问题由VS 2022预览版自带的高版本.NET SDK的兼容问题导致:高版本SDK更新了Razor视图预编译的代码生成规则,默认会输出适配C# 9及以上版本的语法,哪怕项目目标框架是.NET Core 3.1(默认对应C# 8.0),也会在自动生成的_layout.cshtml.g.cs这类文件中出现new()目标类型推断对象创建语法,最终触发语言版本不兼容报错。

解决方案
  • 方案1:强制指定Razor语法版本
    在项目.csproj文件的PropertyGroup节点下添加以下配置,强制Razor编译器使用匹配.NET Core 3.1的规则生成代码:
<RazorLangVersion>3.0</RazorLangVersion>
<LangVersion>8.0</LangVersion>

配置完成后删除项目的obj、bin目录,重新构建即可解决报错。

  • 方案2:固定项目使用.NET Core 3.1 SDK
    在项目根目录新建global.json文件,强制构建流程调用.NET Core 3.1版本的SDK,避免VS 2022的高版本SDK介入Razor代码生成逻辑:
{
  "sdk": {
    "version": "3.1.426",
    "rollForward": "latestMinor"
  }
}

配置中的版本号可替换为你本地已安装的任意3.1系列SDK版本号。

  • 方案3:临时关闭本地构建的Razor预编译
    如果仅需要本地快速调试规避问题,可在.csproj中添加以下配置,本地构建时不预生成Razor视图的.g.cs文件,发布阶段仍保留预编译逻辑不影响线上性能:
<RazorCompileOnBuild>false</RazorCompileOnBuild>
<RazorCompileOnPublish>true</RazorCompileOnPublish>

内容的提问来源于stack exchange,提问作者Kapoue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 13:09:04