MySql.Data.dll中的IO.FileNotFoundException:无法加载System.Security.Permissions

时间:2018-02-03 22:30:15

标签: c# mysql mysql-connector

我正在使用Visual Studio Code,我正在尝试连接到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指令没有发出错误信号。

1 个答案:

答案 0 :(得分:1)

程序集System.Security.Permissions目前不适用于.NET核心应用程序,因此我猜您使用的是与.NET核心2不兼容的旧版MySQL数据库提供程序。

根据official documentation .NET核心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

似乎它可能是一个错误,因为我发现了这个问题.NET Core 2 with MySql.Data results in permission error,并且接受的答案建议更新到版本8.

所以尝试更新到版本 8.0.10-rc 并让问题消失,这是NuGet命令:

Install-Package MySql.Data -Version 8.0.10-rc