.NET 5单文件发布MySQL应用报CodeBase不支持错误解决方案问询
问题根因
你遇到的异常是Oracle官方MySql.Data驱动的已知兼容性问题:该驱动依赖System.Configuration.ConfigurationManager组件读取配置,该组件初始化时会调用程序集的CodeBase属性,而.NET单文件捆绑模式下加载的程序集默认不支持该属性,因此触发报错。直接用dotnet run运行时程序集为独立加载状态,不存在该限制,所以运行正常。
可行解决方案
方案1:替换为MySqlConnector驱动(最推荐)
MySqlConnector是社区维护的MySQL兼容驱动,完全适配.NET单文件、AOT等发布模式,且API和MySql.Data高度兼容,大部分场景下无需修改业务代码:
- 卸载项目中已安装的
MySql.DataNuGet包 - 安装最新版
MySqlConnectorNuGet包 - 重新执行原单文件发布命令即可正常运行
方案2:保留MySql.Data驱动,调整发布参数
如果不想更换驱动,可在发布命令中添加IncludeAllContentForSelfExtract参数,让单文件运行前先将所有依赖解压到临时目录再加载,避免CodeBase读取失败:
- 调整后的发布命令如下:
dotnet publish -c Release -r linux-x64 -p:PublishSingleFile=true -p:IncludeAllContentForSelfExtract=true -o publish/ GarLoader.MySqlUploader
该方案缺点是程序首次启动速度稍慢,运行时会在系统临时目录生成解压后的依赖文件。
方案3:保留MySql.Data驱动,提前初始化配置规避
在程序入口Program.Main方法的最开头添加以下代码,手动初始化MySQL配置,避免驱动自动读取系统配置触发异常:
// 提前禁用复制配置读取,绕过ConfigurationManager调用 MySql.Data.MySqlClient.MySqlConfiguration.Settings.Replication = false;
修改完成后执行原发布命令即可正常运行。
内容的提问来源于stack exchange,提问作者obratim
相关产品推荐
相关产品推荐

