Я пытаюсь подключиться к существующей базе данных Oracle, используя Powershell и Oracle.ManagedDatabaseAccess.dll.У меня есть код, работающий на C # с использованием той же библиотеки.Сборка загружена, но я не могу ее использовать.
Я использую Win10 и Powershell ISE.Я также использую VS2017 / 15.3.2 и .Net 4.7.02046.
Я пытался использовать «Add-Type -AssemblyName» и «Add-Type -Path», которые вообще не работали.Оба варианта сразу же показали ошибки.
Мне удалось позвонить
[Reflection.Assembly]::LoadFile("myrootpath\.nuget\packages\oracle.manageddataaccess.core\2.18.5\lib\netstandard2.0\Oracle.ManagedDataAccess.dll")
, но я получил:
GAC Version Location
--- ------- --------
False v4.0.30319 C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\Oracle.ManagedDataAccess\v4.0_2.0.18.3__89b483f429c47342\Oracle.ManagedDataAccess.dll
Я добавил сборку вручную в GAC, используя gcautil.Теперь я получаю
GAC Version Location
--- ------- --------
True v4.0.30319 C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\Oracle.ManagedDataAccess\v4.0_2.0.18.3__89b483f429c47342\Oracle.ManagedDataAccess.dll
Теперь, когда я звоню:
$command = New-Object Oracle.DataAccess.Client.OracleCommand($sql,$conn)
, я получаю следующую ошибку:
New-Object : The Type [Oracle.ManagedDataAccess.Client.OracleConnection] cannot be found. Make sure that you load the Assembly that contains this Type.
In Line:2 Character:8
+ $conn= New-Object Oracle.ManagedDataAccess.Client.OracleConnection($c ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidType: (:) [New-Object], PSArgumentException
+ FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand
Я читал о решении, чтобы скомпилировать небольшойКонсольное приложение C # (поскольку это работает) и вызов его из powershell.Это может быть осуществимо, однако я действительно хочу понять, в чем здесь проблема.Любая помощь приветствуется.
Обновление / редактирование:
PS H:\> Add-Type -Path "C:\mypath\Oracle.ManagedDataAccess.dll"
Add-Type : At least one type in the assembly could not be loaded.
+ CategoryInfo : NotSpecified: (:) [Add-Type], ReflectionTypeLoadException
+ FullyQualifiedErrorId : System.Reflection.ReflectionTypeLoadException,Microsoft.PowerShell.Commands.AddTypeCommand
PS H:\> $error[0].Exception.LoaderExceptions[0]
The type "System.IO.Stream" in the assembly "netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51" could not be loaded.
Netstandard2.0.0.0 является требованием для Oracle.ManagedDataAccess.dll, который также должен был быть установлен в моем VSproject.
System.IO.Stream должен быть доступен в PS без загрузки.Может быть конфликт версий, потому что моей основной средой разработки является .Net 4.7.02046?