.NET 6中使用MediatR时出现Could not load type 'MediatR.ServiceFactory'错误求解
解决方案:MediatR版本不兼容导致的类型加载错误
这个错误的核心原因是MediatR主包与依赖注入扩展包版本不匹配:你使用了MediatR 12.0.0,但配套的MediatR.Extensions.Microsoft.DependencyInjection是11.0.0,两个版本的API存在兼容性差异,导致扩展包无法找到MediatR 12.0.0中的ServiceFactory类型。
以下是两种可行的修复方案:
方案一:升级DI扩展包至匹配MediatR 12.0.0的版本
- 卸载当前的MediatR和DI扩展包:
Uninstall-Package MediatR Uninstall-Package MediatR.Extensions.Microsoft.DependencyInjection - 安装与MediatR 12.0.0配套的DI扩展包版本:
注:12.x版本的DI扩展包并未被弃用,你可以直接安装使用。Install-Package MediatR -Version 12.0.0 Install-Package MediatR.Extensions.Microsoft.DependencyInjection -Version 12.0.0
方案二:降级MediatR至与11.0.0 DI扩展包兼容的版本
如果你坚持使用11.0.0的DI扩展包,可以将MediatR主包降级到11.0.0:
- 卸载当前的MediatR包:
Uninstall-Package MediatR - 安装MediatR 11.0.0版本:
Install-Package MediatR -Version 11.0.0
额外检查
- 确认项目中没有其他第三方包依赖了旧版本的MediatR,避免出现隐性版本冲突。可以通过NuGet包管理器的"已安装"标签查看所有依赖包的版本。
- 你的注册代码
builder.Services.AddMediatR(Assembly.GetExecutingAssembly());在版本匹配后是完全有效的,无需修改。
内容的提问来源于stack exchange,提问作者Andres Guillen Hernandez
相关产品推荐
相关产品推荐

