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

.NET 6项目Razor页面无法使用C# 9.0 or pattern特性问题

解决ASP.NET Core .NET6中Razor页面CS8400错误(无法使用C# 9+特性)

问题现象

项目升级至.NET6后,Controller代码中可正常使用C# 9的or pattern特性,但在.cshtml页面中使用时触发错误:

D:\Repos\MySolution\MyProject\Views\Home\TestRun.cshtml(40,17): error CS8400: Feature 'or pattern' is not available in C# 8.0. Please use language version 9.0 or greater.

项目整体编译正常,仅Razor页面在运行时编译阶段报错。

原因

.NET6默认采用C#10,但Razor的运行时编译模块未同步继承项目的C#版本,默认使用了C#8.0,导致不支持高版本语法特性。

解决方法

1. 在项目文件中指定Razor语言版本

打开项目的.csproj文件,在<PropertyGroup>节点内添加RazorLangVersion配置,匹配项目的C#版本:

<PropertyGroup>
  <TargetFramework>net6.0</TargetFramework>
  <RazorLangVersion>10.0</RazorLangVersion>
</PropertyGroup>

2. 配置RuntimeCompilation的编译参数

若项目启用了Razor运行时编译,可在Program.cs中显式设置编译时的语言版本:

builder.Services.AddControllersWithViews()
    .AddRazorRuntimeCompilation(options =>
    {
        options.CompilationCallback = context =>
        {
            context.Options.LanguageVersion = Microsoft.CodeAnalysis.CSharp.LanguageVersion.CSharp10;
        };
    });

3. 清理并重建项目

删除项目目录下的bin和obj文件夹,重新编译运行,确保配置生效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 01:45:36