ASP.NET项目用MySqlConnector时遇System.Diagnostics.DiagnosticSource加载异常求助
解决方案:DiagnosticSource版本不匹配问题排查与修复
1. 确认项目引用的DiagnosticSource版本
- 右键项目 → 管理NuGet程序包,查看
System.Diagnostics.DiagnosticSource的已安装版本,确认是否为7.0.0.0 - 若版本不符,直接更新到7.0.0.0,更新后检查NuGet自动生成的web.config绑定重定向是否完整
2. 完善绑定重定向与本地复制配置
原web.config的绑定重定向缺少外层节点,补充完整并添加强制复制配置:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" /> <codeBase version="7.0.0.0" href="file:///System.Diagnostics.DiagnosticSource.dll" /> </dependentAssembly> </assemblyBinding> </runtime>
同时在项目的.csproj文件中添加以下配置,确保DLL被复制到输出目录:
<ItemGroup> <Reference Include="System.Diagnostics.DiagnosticSource, Version=7.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51"> <Private>True</Private> </Reference> </ItemGroup>
3. 排查全局程序集缓存(GAC)冲突
- 以管理员身份打开命令提示符,执行
gacutil /l System.Diagnostics.DiagnosticSource,查看GAC中是否存在该程序集的其他版本 - 若存在冲突版本,执行
gacutil /u System.Diagnostics.DiagnosticSource, Version=X.X.X.X(替换X为冲突版本号)移除该版本 - 操作前请备份生产服务器的GAC内容
4. 验证MySqlConnector的依赖兼容性
- 查看MySqlConnector的NuGet依赖说明,确认其对DiagnosticSource的版本要求
- 若7.0.0.0版本兼容性存在问题,可尝试将DiagnosticSource降级到6.0.0.0,并同步修改绑定重定向的
newVersion为6.0.0.0
5. 清理缓存并重新发布
- 右键项目 → 清理,删除项目目录下的
bin和obj文件夹 - 重新生成解决方案后,再发布到服务器
内容的提问来源于stack exchange,提问作者DougM
相关产品推荐
相关产品推荐

