You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

C#程序(MySQL Connector/NET、.NET 8.0)在命令行编译正常但Visual Studio 2022中运行报错的原因及解决方法咨询

C#程序(MySQL Connector/NET、.NET 8.0)在命令行编译正常但Visual Studio 2022中运行报错的原因及解决方法咨询

我来帮你分析下这个问题的核心原因和对应的解决办法:


问题1:为什么命令行编译运行正常,Visual Studio里却报错?

这本质是项目类型和依赖管理逻辑的差异导致的:

  • 你用csc命令行编译时,采用的是传统.NET Framework的编译模型,而且你的系统环境里可能已经全局存在System.Security.Permissions相关程序集(比如之前安装过.NET Framework SDK或配套组件),所以编译器能自动找到这个隐式依赖,运行时也能正常加载。
  • 而你在VS中创建的是** .NET 8(现代.NET)控制台项目**,这类项目的依赖管理完全基于NuGet,默认不会包含System.Security.Permissions——这个程序集在现代.NET中是作为可选NuGet包存在的,不属于框架核心组件。你手动添加的MySql.Data.dll依赖这个程序集,但你的VS项目没有引入对应的依赖,所以运行时就触发了找不到文件的异常。

另外,手动引用本地MySql.Data.dll的方式在现代.NET项目中本身就不推荐,因为它无法自动处理依赖传递,很容易出现这类缺失问题。


问题2:如何解决Visual Studio中的报错?

最稳妥、推荐的解决方式是放弃手动引用dll,改用NuGet安装官方的MySQL Connector/NET包,步骤如下:

  1. 打开你的VS控制台项目,在解决方案资源管理器中右键点击项目名称 → 选择「管理NuGet程序包」。
  2. 切换到「浏览」标签页,搜索MySql.Data,找到由Oracle(原MySQL AB)发布的官方包,选择你使用的9.5.0版本,点击「安装」。
  3. 安装完成后,VS会自动处理所有依赖项(包括System.Security.Permissions),你不需要再手动添加任何dll引用。
  4. 替换项目中的Program.cs代码为你之前的测试代码,重新编译运行即可正常连接MySQL。

如果你因特殊需求必须手动引用MySql.Data.dll,则需要额外补充依赖:

  1. 同样通过NuGet包管理器,搜索并安装System.Security.Permissions包(选择兼容.NET 8的版本)。
  2. 确保你手动引用的MySql.Data.dll是针对.NET 8编译的版本(而非.NET Framework版本),否则可能还会出现其他兼容性异常。

补充说明:你的测试代码本身是没有问题的,核心问题出在依赖管理的方式上,用NuGet管理依赖是现代.NET项目的标准做法,能最大程度避免这类运行时依赖缺失的问题。

火山引擎 最新活动