2016-09-18 82 views
1

PowerShell中刚刚被打开来源(V6.0.0-alpha.10),和我 好一会才从OS X的连接到MySQL实例错误0x80131047加载MySQL连接DLL

甲骨文似乎建议(如果我正确阅读)他们有一个 。核心连接器 here。 我跑的安装是这样的:

Install-Package MySql.ConnectorNET.Entity -Destination /MySQL 

和输出看起来很不错:

Name      Version Source Summary     

----      ------- ------ ------- 
MySql.ConnectorNET.Data 6.8.3.2 nugget ADO.Net driver for MySQL  
MySql.ConnectorNET.Entity 6.8.3.2 nugget MySql Connector/NET for Entity Framework 6

当我尝试加载这样的装配:

[System.Reflection.Assembly]::Load(/MySQL/MySql.ConnectorNET.Data.6.8.3.2/lib/net45/MySql.Data.dll) 

我得到以下错误(请注意我通过 变量$dll)的路径:

Exception calling "Load" with "1" argument(s): "Could not load 
file or assembly 
'/MySQL/MySql.ConnectorNET.Entity.6.8.3.2/lib/net40/MySql.Data.dll, 
Culture=neutral, PublicKeyToken=null'. The given assembly name or 
codebase was invalid. (Exception from HRESULT: 0x80131047)" At 
/development/scripts/test.ps1:28 char:1 
+ [System.Reflection.Assembly]::Load("$dll") 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
    + FullyQualifiedErrorId : FileLoadException

解决方法/修复的任何想法?我意识到PowerShell仍然在 alpha。

编辑

我能够使用这两个命令来安装MySQL提供:

Register-PackageSource -Name nuget.org -ProviderName NuGet -Location https://www.nuget.org/api/v2/ 
Install-Package MySql.Data.EntityFrameworkCore -Destination /Volumes/Main/libraries/MySQL/ -AllowPrereleaseVersions 

我尝试注册所有我能想到的组件:

 
Microsoft.EntityFrameworkCore.1.0.1/lib/netstandard1.3/Microsoft.EntityFrameworkCore.dll 
Microsoft.Extensions.Configuration.1.0.0/lib/netstandard1.1/Microsoft.Extensions.Configuration.dll 
Microsoft.Extensions.Configuration.Json.1.0.0/lib/netstandard1.3/Microsoft.Extensions.Configuration.Json.dll 
MySql.Data.EntityFrameworkCore.7.0.5-IR21/lib/netstandard1.6/MySql.Data.EntityFrameworkCore.dll 
MySql.Data.7.0.5-IR21/lib/netstandard1.6/MySql.Data.dll

但,当试图创建一个新的MySql对象时,它仍然弹出 这个:

新对象:找不到类型[MySql.Data.MySqlClient]: 验证包含此类型的程序集是否已加载。

+0

道歉如果格式有点奇怪 - 我无法弄清楚如何摆脱可怕的'您的帖子看起来包含的代码格式不正确'message – Jeremy

回答

0

SOLUTION

所以,事实证明我是(大部分)正确的轨道上。 所有需要加载的DLL的。让生活通过将它们复制到自己的目录比较容易,然后在每一个迭代加载它们:

副本的DLL文件到新的位置

Get-ChildItem "/Volumes/Main/libraries/mysql/*/lib/netstandard1.*/*.dll" | Copy-Item -Destination "/Volumes/Main/libraries/NEW_mysql" -Force 

加载所有所需的DLL

Get-ChildItem "/Volumes/Main/libraries/NEW_mysql" | ForEach-Object { 
$path = "/Volumes/Main/libraries/NEW_mysql/" + $_.Name 
Add-Type -Path $path -PassThru | Out-Null 
} 
1

这不是一个.NET核心库 - 这里的“核心”这个词表示EF6和Web软件包之间共享的功能,并且在.NET Core的引入之前就已经开始了。

实体框架Core在撰写本文时正在开发中的MySql库。

+0

好的,谢谢。您是否知道任何用于.Net Core的MySql库? – Jeremy

+0

是的,看看https://docs.efproject.net/en/latest/providers/mysql/和https://docs.efproject.net/en/latest/providers/pomelo/index.html –

+0

谢谢詹姆斯。我能够使用这两个命令安装MySQL提供程序:Register-PackageSource -Name nuget.org -ProviderName NuGet-Location https://www.nuget.org/api/v2/&Install-Package MySql.Data.EntityFrameworkCore。但是,做一个新对象MySql.Data.MySqlClient并不是很成功。我使用其他信息编辑了帖子 – Jeremy