RabbitMQ.Client.dll抛出FileLoadException异常的原因、解决及VS2019文件位置查询
我之前也碰到过这个和RabbitMQ.Client相关的程序集加载错误,给你梳理下原因和解决步骤:
错误原因分析
这个System.IO.FileLoadException本质是程序集版本不匹配:你的项目引用的Microsoft.Diagnostics.Tracing.EventSource版本是1.1.28.0,但实际运行时CLR找到的程序集(或者它的依赖组件)的清单定义和引用要求不一致,导致加载失败。通常是NuGet包版本冲突、绑定重定向未配置,或者RabbitMQ.Client的依赖版本和你项目中其他包的依赖版本冲突导致的。
解决步骤
检查并安装对应版本的NuGet包
- 右键项目 → 「管理NuGet程序包」,在「浏览」标签搜索
Microsoft.Diagnostics.Tracing.EventSource。 - 如果未安装,直接安装1.1.28.0版本;如果已安装其他版本,尝试降级/升级到1.1.28.0。
- 同时检查RabbitMQ.Client的版本,确保它依赖的
Microsoft.Diagnostics.Tracing.EventSource版本和你安装的一致(可以在NuGet「已安装」标签里查看RabbitMQ.Client的依赖项)。
- 右键项目 → 「管理NuGet程序包」,在「浏览」标签搜索
配置程序集绑定重定向
如果安装对应版本后仍报错,大概率是绑定重定向未正确设置:- 打开项目的
App.config(Web项目为Web.config),找到<runtime>节点(没有的话就添加一个)。 - 在
<runtime>内添加以下配置:<dependentAssembly> <assemblyIdentity name="Microsoft.Diagnostics.Tracing.EventSource" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-1.1.28.0" newVersion="1.1.28.0" /> </dependentAssembly> - 保存后重新编译项目,这个配置会告诉CLR强制使用1.1.28.0版本加载该程序集,忽略版本不匹配的问题。
- 打开项目的
清理并重建项目
本地bin/obj目录可能残留旧版本程序集导致加载混乱:- 右键项目 → 「清理」,然后右键 → 「生成」。
- 也可以手动删除项目根目录下的
bin和obj文件夹,再重新编译。
关于找不到程序集位置的问题
你用Ctrl+Shift+T没找到的话,可以试试这些路径:
- NuGet本地缓存路径:默认在
C:\Users\[你的用户名]\.nuget\packages\microsoft.diagnostics.tracing.eventsource\1.1.28.0\lib,里面会根据不同.NET框架版本分文件夹(比如net45、netstandard1.0),对应你项目的目标框架去查找dll。 - 项目依赖目录:如果你已经通过NuGet安装了这个包,右键项目 → 「查看所有文件」,展开
Dependencies→Packages,找到Microsoft.Diagnostics.Tracing.EventSource包,右键 → 「在文件资源管理器中打开」,就能直接定位到dll所在文件夹。 - 注意:如果还没安装这个NuGet包,Visual Studio的搜索肯定找不到,先按前面的步骤安装后再找。
内容的提问来源于stack exchange,提问作者hellouworld
相关产品推荐
相关产品推荐

