.NET Core生成Identity脚手架遇CS0121歧义调用错误怎么解决?
解决Identity脚手架生成时AddDefaultTokenProviders方法歧义的CS0121错误
问题根源
这个错误是因为项目中引用了多个版本的Microsoft.AspNetCore.Identity相关包,或者同时引入了包含该方法的不同命名空间程序集,导致编译器无法确定调用哪个版本的方法。
具体解决步骤
1. 统一Identity相关包版本
打开你的entityFrameworkSQL.csproj文件,检查所有以Microsoft.AspNetCore.Identity开头的包(比如Microsoft.AspNetCore.Identity、Microsoft.AspNetCore.Identity.EntityFrameworkCore等),确保它们的版本完全一致。
举例:如果项目基于.NET 6,所有Identity相关包的版本都要统一为6.x.x;如果是.NET 7则统一为7.x.x,绝对不能混合不同大版本的包。
2. 显式指定方法的命名空间
如果统一版本后问题仍存在,在Program.cs中调用AddDefaultTokenProviders时,直接指定完整命名空间消除歧义:
// 替换原本的builder.Services.AddDefaultTokenProviders(); Microsoft.AspNetCore.Identity.IdentityBuilderExtensions.AddDefaultTokenProviders(builder.Services.AddIdentity<IdentityUser, IdentityRole>());
3. 移除冗余包引用
检查csproj文件,删除重复或不必要的Identity相关包引用,比如同时引用了Microsoft.AspNetCore.Identity和Microsoft.AspNetCore.Identity.UI但实际用不到其中一个的情况。
4. 清理NuGet缓存并重新还原
打开命令行,执行以下命令清理缓存并重新还原项目依赖:
dotnet nuget locals all --clear dotnet restore
5. 重新生成Identity脚手架
完成上述操作后,再次运行脚手架生成命令:
dotnet aspnet-codegenerator identity -dc entityFramework.Models.MyBlogContext
内容的提问来源于stack exchange,提问作者hieund
相关产品推荐
相关产品推荐

