2016-09-18 3 views
1

PowerShell только что был открыт Sourced (v6.0.0-alpha.10), и я пытается получить его для подключения к экземпляру MySQL с OS X.Ошибка 0x80131047 загрузки MySQL Connector DLL

Oracle кажется (если я правильно его читаю), у них есть . Чистый соединитель Core 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 все еще находится в альфа.

EDIT

Я был в состоянии установить поставщик 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, он все еще бомбит :

New-Object: Невозможно найти тип [MySql.Data.MySqlClient]: убедитесь, что загружена сборка, содержащая этот тип.

+0

Извинение если форматирование немного нечетное - я не мог понять, как пройти мимо страшного «Ваше сообщение, похоже, содержит код, который неправильно отформатирован» сообщение – Jeremy

ответ

0

РЕШЕНИЕ

Таким образом, получается, что я был на (в основном) правильном пути. Необходимо установить все файлы с номером.Сделать жизнь проще, скопировав их в отдельный каталог, а затем загружать их перебор по каждой из них:

копии динамических библиотек в новое место

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 Core. Здесь слово «Core» означает функциональность, разделяемую между EF6 и веб-пакетами, и предваряет введение .NET Core.

Ядро Entity Framework имеет библиотеки MySql, которые разрабатываются на момент написания.

+0

Хорошо, спасибо. Знаете ли вы о каких-либо библиотеках MySql для .Net Core? – Jeremy

+0

Да, посмотрите https://docs.efproject.net/ru/latest/providers/mysql/ и https://docs.efproject.net/ru/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