升级Volo.Abp.EventBus至4.3.0后EventNameAttribute加载失败排查求助
报错信息:无法从程序集‘Volo.Abp.EventBus, Version=4.3.0.0, Culture=neutral, PublicKeyToken=null’中加载类型‘Volo.Abp.EventBus.EventNameAttribute’。
背景:Volo.Abp.EventBus 4.2.2中存在Volo.Abp.EventBus.EventNameAttribute类型,4.3.0版本将该类型拆分至Volo.Abp.EventBus.Abstractions程序集,正常升级后无需修改代码,但项目仍出现加载失败,推测存在4.2.2版本的引用,且无法通过搜索定位、编译无报错。
以下是具体定位方法:
查看完整依赖树
打开终端进入项目根目录,执行命令获取所有直接/间接的Volo.Abp.EventBus引用:dotnet list package --include-transitive Volo.Abp.EventBus命令结果会清晰列出每个引用的版本及来源,快速定位哪个依赖还在引用4.2.2版本。
检查包锁定文件
查看项目根目录的packages.lock.json(适用于.NET Core/.NET 5+项目)或packages.config(旧版.NET Framework项目),直接搜索Volo.Abp.EventBus,找到版本为4.2.2的条目,查看对应的引用源。启用程序集绑定日志
运行Windows自带的程序集绑定日志查看器(Fuslogvw.exe),启用日志记录后启动项目。加载失败时,日志会详细显示尝试加载的程序集版本、文件路径及调用栈,精准定位触发旧版本类型加载的模块。清理缓存并重建项目
执行命令清理项目缓存并重新还原依赖,避免旧程序集残留:dotnet clean dotnet restore重建项目后,检查输出目录中的
Volo.Abp.EventBus.dll版本是否为4.3.0,同时验证问题是否解决。
内容的提问来源于stack exchange,提问作者张志炜

