IO.FileNotFoundException 在 MySql.Data.dll 中:无法加载 System.Security.Permissions
IO.FileNotFoundException in MySql.Data.dll: Can't load System.Security.Permissions
我正在使用 Visual Studio 代码,我正在尝试连接到我的 MySql 服务器 (5.5)。我已经下载并安装了最新的 (6.10.6) MySql 连接器。我不得不研究如何在 VS Code 中添加引用,但我做到了。现在我的 .csproj 文件如下所示:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Reference Include="Lib\MySql.Data.dll">
<HintPath>MySql.Data</HintPath>
<SpecificVersion>False</SpecificVersion>
</Reference>
</ItemGroup>
</Project>
我已经将 C:\Program Files (x86)\MySQL\MySQL Connector Net 6.10.6\Assemblies\v4.5.2 的内容复制到 myProject\Lib。编译时没有错误,全是绿色。但是当我尝试使用此代码连接时
using System.Data;
using System.Security.Permissions;
using MySql.Data;
using MySql.Data.MySqlClient;
public static bool Connect(){
string str = "server=192.168.0.160;user=usr;database=DB;port=3306;password=pass";
MySqlConnection connection = new MySqlConnection(str);
connection.Open();
System.Console.WriteLine(connection.State);
return true;
}
它失败了,并产生了这个错误:
An unhandled exception of type 'System.IO.FileNotFoundException' occurred in MySql.Data.dll: 'Could not load file or assembly 'System.Security.Permissions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The system can't find the file.'
我不知道为什么,因为 using 指令没有发出错误信号。
程序集 System.Security.Permissions
当前不可用于 .NET 核心应用程序,所以我猜您使用的是旧版本的 MySQL 数据库提供程序,它与 .NET 核心 2 不兼容。
根据 official documentation .NET core 2.0 仅从 6.10 版本开始受支持。
尝试从以下位置安装最新版本:https://dev.mysql.com/downloads/connector/net/6.10.html
编辑
如果您已经拥有该版本但仍然无法使用,可能是因为您缺少一些参考资料。你为什么不尝试使用官方的NuGet而不是引用GAC中的dll,这里是命令:
Install-Package MySql.Data -Version 6.10.6
如果您使用的是 VS Code,则可以使用 NuGet 包管理器扩展直接从编辑器管理包:https://marketplace.visualstudio.com/items?itemName=jmrog.vscode-nuget-package-manager
编辑 2
似乎这可能是一个错误,因为我发现了这个问题 并且接受的答案建议更新到版本 8。
所以尝试更新到版本 8.0.10-rc 让问题消失,这里是 NuGet 命令:
Install-Package MySql.Data -Version 8.0.10-rc
不能只升级 MySQL 连接器,因为较新的连接器和旧数据库之间可能存在兼容性问题。
我正在使用 Visual Studio 代码,我正在尝试连接到我的 MySql 服务器 (5.5)。我已经下载并安装了最新的 (6.10.6) MySql 连接器。我不得不研究如何在 VS Code 中添加引用,但我做到了。现在我的 .csproj 文件如下所示:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Reference Include="Lib\MySql.Data.dll">
<HintPath>MySql.Data</HintPath>
<SpecificVersion>False</SpecificVersion>
</Reference>
</ItemGroup>
</Project>
我已经将 C:\Program Files (x86)\MySQL\MySQL Connector Net 6.10.6\Assemblies\v4.5.2 的内容复制到 myProject\Lib。编译时没有错误,全是绿色。但是当我尝试使用此代码连接时
using System.Data;
using System.Security.Permissions;
using MySql.Data;
using MySql.Data.MySqlClient;
public static bool Connect(){
string str = "server=192.168.0.160;user=usr;database=DB;port=3306;password=pass";
MySqlConnection connection = new MySqlConnection(str);
connection.Open();
System.Console.WriteLine(connection.State);
return true;
}
它失败了,并产生了这个错误:
An unhandled exception of type 'System.IO.FileNotFoundException' occurred in MySql.Data.dll: 'Could not load file or assembly 'System.Security.Permissions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The system can't find the file.'
我不知道为什么,因为 using 指令没有发出错误信号。
程序集 System.Security.Permissions
当前不可用于 .NET 核心应用程序,所以我猜您使用的是旧版本的 MySQL 数据库提供程序,它与 .NET 核心 2 不兼容。
根据 official documentation .NET core 2.0 仅从 6.10 版本开始受支持。
尝试从以下位置安装最新版本:https://dev.mysql.com/downloads/connector/net/6.10.html
编辑
如果您已经拥有该版本但仍然无法使用,可能是因为您缺少一些参考资料。你为什么不尝试使用官方的NuGet而不是引用GAC中的dll,这里是命令:
Install-Package MySql.Data -Version 6.10.6
如果您使用的是 VS Code,则可以使用 NuGet 包管理器扩展直接从编辑器管理包:https://marketplace.visualstudio.com/items?itemName=jmrog.vscode-nuget-package-manager
编辑 2
似乎这可能是一个错误,因为我发现了这个问题
所以尝试更新到版本 8.0.10-rc 让问题消失,这里是 NuGet 命令:
Install-Package MySql.Data -Version 8.0.10-rc
不能只升级 MySQL 连接器,因为较新的连接器和旧数据库之间可能存在兼容性问题。