Entity Framework Core 6.0.7添加迁移失败:无法加载DiagnosticsLogger类型
解决EF Core 6.0.7 + .NET 6迁移时的System.TypeLoadException问题
以下是针对该问题的具体排查和解决步骤:
统一EF Core相关包版本
确保项目中所有EF Core相关的NuGet包(包括Microsoft.EntityFrameworkCore、Microsoft.EntityFrameworkCore.Tools、Microsoft.EntityFrameworkCore.Design等)版本完全一致,都为6.0.7。可以直接打开项目的.csproj文件检查,示例配置如下:<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.7" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.7"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.7"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference>若存在版本不一致,统一修改后,在NuGet包管理器控制台执行
Update-Package -Reinstall重新安装所有包。检查并对齐全局dotnet-ef工具版本
全局安装的dotnet-ef工具版本可能和项目依赖的EF Core版本不匹配,导致冲突。- 执行
dotnet tool list --global查看当前全局工具版本 - 若版本不是6.0.7,先卸载旧版本:
dotnet tool uninstall --global dotnet-ef - 安装对应版本:
dotnet tool install --global dotnet-ef --version 6.0.7
- 执行
清理NuGet本地缓存
缓存损坏也可能引发此类加载异常,执行dotnet nuget locals all --clear清理所有本地NuGet缓存,之后执行dotnet restore重新还原项目依赖。排查第三方库的版本冲突
部分第三方NuGet库可能依赖了其他版本的EF Core,导致版本冲突。可以通过以下方式排查:- 在Visual Studio中展开项目的「依赖项」→「NuGet」,查看每个包的依赖关系
- 执行
dotnet list package --include-transitive查看所有传递依赖,确认是否有其他库引入了非6.0.7版本的Microsoft.EntityFrameworkCore
若存在冲突,尝试更新该第三方库到兼容EF Core 6.0.7的版本,或更换替代库。
指定项目和框架执行迁移命令
确保在NuGet包管理器控制台中选择了正确的目标项目(顶部「默认项目」下拉框),也可以尝试使用dotnet cli命令并指定框架:dotnet ef migrations add Test --framework net6.0
内容的提问来源于stack exchange,提问作者Dhawala Tharindra Ranaweera
相关产品推荐
相关产品推荐

