2016-09-18 84 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