在.NET 6的Microsoft.NET.Sdk.Razor项目中引用哪些包可解决IViewLocationExpander缺失问题?
解决方案
核心原因
从.NET Core 3.0开始,ASP.NET Core的核心组件不再以独立NuGet包的形式分发,而是整合进Microsoft.AspNetCore.App共享框架中。你看到的Microsoft.AspNetCore.Mvc.Razor包停更在2.2.0,是因为它仅适用于.NET Core 2.x版本,不适用于.NET 6。
具体解决步骤
- 确认Razor项目的目标框架
在你的Microsoft.NET.Sdk.Razor项目文件中,确保TargetFramework设置为net6.0:
<PropertyGroup> <TargetFramework>net6.0</TargetFramework> </PropertyGroup>
- 添加共享框架引用
在项目文件中添加<FrameworkReference>节点,引入Microsoft.AspNetCore.App共享框架,即可自动获取IViewLocationExpander所在的程序集:
<ItemGroup> <FrameworkReference Include="Microsoft.AspNetCore.App" /> </ItemGroup>
完整Razor项目文件示例
<Project Sdk="Microsoft.NET.Sdk.Razor"> <PropertyGroup> <TargetFramework>net6.0</TargetFramework> </PropertyGroup> <ItemGroup> <FrameworkReference Include="Microsoft.AspNetCore.App" /> </ItemGroup> </Project>
补充说明
- 无需手动指定包版本,共享框架版本会与你安装的.NET 6 SDK版本(如6.0.12)自动对齐。
- 主ASP.NET Core Web项目(
Microsoft.NET.Sdk.Web)默认已包含该共享框架引用,直接引用Razor项目即可正常使用相关类型。
内容的提问来源于stack exchange,提问作者Alexander Zeitler
相关产品推荐
相关产品推荐

