如何修复macOS下ASP.NET Core脚手架报rzc generate exited with code 150错误
问题根本原因
你的项目存在包版本不兼容问题:
- .NET SDK 5.0支持向下兼容3.1版本项目,但你单独引用了
Microsoft.AspNetCore.Mvc 2.2.0这个过时的包。ASP.NET Core 3.0之后,Mvc相关的组件已经全部内置在Microsoft.NET.Sdk.WebSDK中,不需要单独引用,2.2版本的包和3.1的项目框架冲突,导致Razor代码生成工具调用失败。 - 低版本的
Microsoft.AspNetCore.Razor.Design 2.2.0是过时的Mvc包连带引入的,和3.1项目的Razor版本不匹配,所以抛出rzc generate错误150。
可行修复步骤
- 第一步:卸载
Microsoft.AspNetCore.Mvc2.2.0包
直接删除你.csproj里的这两行配置:<None Remove="Microsoft.AspNetCore.Mvc" /> <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" /> - 第二步:清理Nuget缓存和项目构建文件
打开终端进入项目根目录,依次执行以下命令:dotnet clean dotnet nuget locals all --clear - 第三步:还原项目依赖并重新构建
继续执行:dotnet restore dotnet build - 第四步:重新尝试生成控制器脚手架,此时错误应该已经解决。
额外排查方案
如果执行完上述步骤还是报错,可以尝试以下操作:
- 确认你安装的3.1版本运行时完整,在终端执行
dotnet --list-runtimes,确认输出中有Microsoft.AspNetCore.App 3.1.x版本 - 把所有3.1的Nuget包统一升级到最新的3.1.x补丁版本,比如当前
Microsoft.EntityFrameworkCore.SqlServer是3.1.15,可以和其他包统一升级到3.1.18,避免版本差导致的兼容问题 - 如果还是不行,可以在.csproj的PropertyGroup节点中加入以下配置,指定Razor语言版本和3.1框架匹配:
<RazorLangVersion>3.0</RazorLangVersion>
内容的提问来源于stack exchange,提问作者ReemTek
相关产品推荐
相关产品推荐

