.NET6 WinForm操作数据库时报无法加载System.Management程序集错误
问题场景
当前开发环境为Windows 11,项目为基于.NET 6的Windows窗体应用,附带多个同为.NET 6目标框架的类库。执行MySQL数据插入操作,调用连接对象的Open()方法时抛出程序集加载错误,此前使用Visual Studio 2013开发同类项目时从未触发该问题,检索公开的同类问题帖均未找到有效解决方案。
触发的错误信息:
Could not load file or assembly 'System.Management, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
对应出错的业务代码:
public static void ExecuteNonQuery(MySqlCommand cmd, ref string msg) { MySqlConnection conn = new MySqlConnection(); try { conn.ConnectionString = ConString; cmd.CommandTimeout = ComTym; conn.Open(); // 错误触发位置 cmd.Connection = conn; var rowsAffected = cmd.ExecuteNonQuery(); conn.Close(); } catch (Exception ex) { msg = ErrorMessage(ex); } finally { conn.Close(); } }
修复步骤
按顺序排查操作即可:
- 给WinForm启动项目(不是类库项目)安装
System.Management正式版NuGet包,版本选择适配.NET 6的稳定版即可。.NET 6下该程序集不属于框架默认自带的基础库,不会自动引用;且依赖解析以启动项目的输出配置为准,仅在类库中安装不会把对应dll复制到运行目录,这是最常见的触发原因。 - 右键启动项目选择「编辑项目文件」,检查
<PropertyGroup>配置块中是否存在<UseWindowsForms>true</UseWindowsForms>配置,缺失则手动补上。该配置缺失时,SDK不会自动将Windows桌面专属的系统类库复制到输出目录,会触发相关程序集加载失败。 - 检查当前使用的MySQL驱动(MySql.Data或MySqlConnector)版本,若使用的是适配.NET 7/.NET 8的高版本驱动,降级到支持.NET 6的LTS稳定版即可。高版本驱动的程序集版本映射逻辑在.NET 6环境下运行时,会强制查找4.0.0.0版本的System.Management,很容易出现版本匹配错误。
- 若使用独立部署模式发布项目,关闭「裁剪未使用的程序集」选项,程序集裁剪逻辑很容易误删System.Management的相关依赖,导致运行时加载失败。
内容的提问来源于stack exchange,提问作者Little Jibari
相关产品推荐
相关产品推荐

