ABP控制台调用领域服务报无法加载IPermissionStateManager错误如何解决
异常根因
该TypeLoadException是ABP框架依赖包版本跨大版本混用不兼容导致的:
Volo.Abp.Authorization.Permissions.IPermissionStateManager接口是ABP v5.0及以上版本才新增到Volo.Abp.Authorization.Abstractions程序集的类型,你当前加载的4.4.2版本的该程序集不存在这个接口定义。- 你引入的高版本
AbpPermissionManagementDomainModule等权限管理相关包内部已经依赖了这个新接口,但你的基础授权模块AbpAuthorizationModule还停留在4.4.2版本,版本断层导致运行时加载类型失败。 - 也可能是同一解决方案内不同项目引用的ABP相关包版本不统一,编译时混入了不同版本的ABP dll。
解决步骤
- 统一所有项目的ABP相关依赖包版本,禁止跨大版本混用:
- 若要继续使用4.4.2版本框架:将所有
AbpPermissionManagement*开头的权限管理相关包全部降级到4.4.2版本,该版本的权限模块不会依赖不存在的IPermissionStateManager接口。 - 若要使用高版本权限管理功能:将所有ABP基础包(包括
Volo.Abp.Authorization、Volo.Abp.Ddd.Domain等核心包)全部升级到和权限管理包一致的5.x及以上稳定版本。
- 若要继续使用4.4.2版本框架:将所有
- 清理项目缓存避免旧dll残留:
- 关闭IDE,删除解决方案根目录下的
.vs文件夹 - 删除所有项目的
bin、obj文件夹 - 重新打开IDE,执行Nuget包还原后重新编译整个解决方案
- 关闭IDE,删除解决方案根目录下的
- 检查控制台项目的Nuget依赖树,确认所有ABP相关包没有版本冲突提示。
内容的提问来源于stack exchange,提问作者Siva Kumar
相关产品推荐
相关产品推荐

