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

Visual Studio中ASP.NET Core 8 Razor隐式转换失效问题求助

解决ASP.NET Core 8 Razor隐式转换(@:/HTML标签)在Visual Studio中被误报的问题

问题背景

正在将基于.NET 4.7的ASP.NET项目通过YARP反向代理并行增量升级到ASP.NET Core 8,解决方案中同时包含旧.NET Framework项目与新.NET Core项目。ASP.NET Core 8已移除Razor文件中旧@helper语法的支持,改用隐式转换特性替代,但Visual Studio设计时仍按旧Razor规则检测,导致<span>标签、显式转换标记@:均被标记为错误。

此前尝试升级Microsoft.AspNetCore.Mvc至2.3.0,问题暂时缓解后复现;添加Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 8.0.12包后出现依赖版本冲突,问题未解决。

解决方案

1. 强制指定Razor语言版本

在ASP.NET Core 8项目的.csproj文件中添加以下配置,确保IDE使用正确的Razor版本:

<PropertyGroup>
  <RazorLangVersion>8.0</RazorLangVersion>
</PropertyGroup>

2. 统一ASP.NET Core依赖版本

移除项目中所有低于8.0版本的Microsoft.AspNetCore.*包,改用ASP.NET Core 8的元包管理依赖:

  • 卸载NuGet中所有2.x版本的Microsoft.AspNetCore.Mvc等旧包
  • 确保项目引用Microsoft.AspNetCore.App元包(ASP.NET Core 8项目默认包含,缺失则添加),它会自动维护核心依赖的版本一致性
  • 若需运行时编译,安装与项目版本完全匹配的Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation(即8.0.x版本,x需与项目SDK版本一致)

3. 清理缓存并重建项目

  • 关闭Visual Studio,删除项目目录下的bin、obj文件夹
  • 删除Visual Studio组件缓存:%LOCALAPPDATA%\Microsoft\VisualStudio\<你的VS版本号>\ComponentModelCache
  • 重新打开解决方案,依次执行清理解决方案→重建解决方案

4. 隔离旧项目的依赖干扰

由于解决方案中同时存在.NET Framework项目,需避免旧项目的Razor包影响新项目:

  • 在NuGet包管理器中设置新项目的依赖为项目级独立管理,不继承解决方案的包版本
  • 检查新项目的PackageReference,确保未引用.NET Framework专属的Microsoft.AspNet.Razor等包

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 22:03:12