.NET 5 ASP.NET托管Blazor WASM服务端脚手架Identity时报包还原失败错误
可行解决思路
- 先手动触发服务端项目的NuGet还原
右键解决方案中的server项目,选择「还原NuGet程序包」,等待还原全程无报错完成后,再重新触发Identity脚手架添加操作。VS脚手架自带的自动还原流程常被并行编译任务拦截,提前手动完成还原可避开该类异常。 - 校正NuGet程序包源配置
打开VS「工具>NuGet包管理器>程序包源」,仅保留官方默认nuget.org源,移除自定义、本地离线、过期的第三方包源,避免脚手架拉取依赖时从错误源下载导致校验失败。 - 手动安装匹配版本的脚手架依赖包
.NET 5版本的Identity脚手架对Microsoft.VisualStudio.Web.CodeGeneration.Design包有严格版本要求,在server项目的NuGet包管理器中安装适配.NET 5的5.0.x版本该包,不要安装6.0及以上的高版本,安装完成重新生成项目后再执行脚手架操作。 - 绕过VS内置脚手架,用CLI命令手动生成页面
打开对应.NET 5版本的开发人员命令提示符,切换到server项目根目录依次执行:- 安装匹配版本的代码生成工具:
dotnet tool install -g dotnet-aspnet-codegenerator --version 5.0.2 - 查看Identity生成的参数说明:
dotnet aspnet-codegenerator identity -h - 按需求执行生成命令,例如指定要生成的登录、注册页面:
dotnet aspnet-codegenerator identity -dc 项目名称.Data.ApplicationDbContext --files "Account.Login;Account.Register"
该方式直接绕过VS内置脚手架的自动包还原校验逻辑,不会触发自动回滚的报错。
- 安装匹配版本的代码生成工具:
- 临时调整跨项目引用的还原优先级
打开server项目的.csproj文件,找到对shared项目的引用节点,在节点内添加RestoreSources属性临时指定当前项目的包拉取顺序,规避跨项目引用时的依赖解析冲突,脚手架操作完成后可移除该临时属性。
注意:操作全程需保持VS NuGet包管理器处于允许下载包的启用状态,不要开启离线模式。
内容的提问来源于stack exchange,提问作者Asmussen
相关产品推荐
相关产品推荐

