【问题标题】:How install Oracle package for Oracle.ManagedDataAccess.dll in VS Code如何在 VS Code 中为 Oracle.ManagedDataAccess.dll 安装 Oracle 包
【发布时间】:2022-01-12 22:09:16
【问题描述】:

我正在尝试在 VS Code 中安装上述软件包。出于某种原因,当我将它放在脚本的顶部时,我收到一条错误消息。

using namespace system.collections.generic
Add-Type -AssemblyName System.Data.OracleClient
Add-Type  -Path "C:\Users\me\OneDrive - company\Documents\2021\temp endToEnd\oracle.ManagedDataAccess.Core\oracle.manageddataaccess.core.3.21.50\lib\netstandard2.1\Oracle.ManagedDataAccess.dll"

错误:

Add-Type : Missing an argument for parameter 'AssemblyName'. Specify a parameter of type 'System.String[]' and try again.

我也试过Add-type -Path "C:\Users\me\OneDrive - company\Documents\2021\temp endToEnd\oracle.ManagedDataAccess.Core\oracle.manageddataaccess.core.3.21.50\lib\netstandard2.1\Oracle.ManagedDataAccess.dll"

它有这个错误:

Add-Type : Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.

我的问题是,我该如何加载它,所以我可以执行以下操作:

$connectionString = "Data Source=$dataSource;User Id=$username;Password=$password;" 
$con = New-Object Oracle.ManagedDataAccess.Client.OracleConnection($connectionString)

我正在尝试安装此软件包,因为当我尝试执行上面的最后一行代码时出现此错误:

New-Object : Cannot find type [Oracle.ManagedDataAccess.Client.OracleConnection]: verify that the assembly containing this type is loaded.

我也尝试通过 nuget manager 执行此操作,使用 ctrl shift P,nuget manager,但它没有出现在我可以看到的列表中(odp.net、oracle managed...等)。

我已经从 oracle 网站下载了这个:

oracle.manageddataaccess.core.3.21.50.nupkg

然后我使用 7-zip 将其解压缩到我要添加类型的位置。

我一直在查看这些链接: New-object Oracle.ManagedDataAccess.Client.OracleConnection

oracle-developer-tools-vs-code

install nuget package in vs code

我似乎无法安装此命令,因此该命令在脚本中有效。任何帮助将不胜感激。

【问题讨论】:

  • 第一个技巧是下载正确的Oracle.ManagedDataAccess.dll,一旦你有了它,那么add-type -path (join-path $DownloadedPath 'Oracle.ManagedDataAccess.dll')将在不安装oracle客户端的情况下工作。

标签: oracle powershell visual-studio-code package


【解决方案1】:

您基本上将 powershell 视为客户端应用程序,您需要:Oracle 数据应用程序客户端 (ODAC) 驱动程序,powershell 是一种托管内存模型,因此您需要托管内存模型,而且很可能是 64-第一个,除非出于某种原因您正在运行 32 位 powershell...除此之外,它可能取决于哪个版本最适合您的 Oracle 数据库。

例如 12cR1:

下载ODP.NET_Managed_ODAC122cR1.zip

提取odp.net\managed\common\Oracle.ManagedDataAccess.dll

PS C:\working> add-type -path (ls .\Oracle.ManagedDataAccess.dll).FullName
PS C:\working> $OraEntry = '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(Host=database.example.com)(Port=1234)))(CONNECT_DATA=(service_name=BigData)))'
PS C:\working> $con = [Oracle.ManagedDataAccess.Client.OracleConnection]::new()
PS C:\working> $con.ConnectionString = "Data Source=$OraEntry;User Id=$username;Password=$password"
PS C:\working> $con.Open()

如果您不知道 OraEntry 应该是什么,您可以从您的 tnsnames.ora 复制它和/或咨询您的数据库管理员

【讨论】:

    【解决方案2】:

    看看How the Runtime Locates Assemblies

    大多数常见的 .NET 程序集是从 当前目录全局程序集缓存 (GAC) 加载的。 GAC 优先于本地存储的文件。

    检查您下载的包中的文件,应该有OraProvCfg.exe。将其用于将 dll 添加到 GAC 并进行配置:

    OraProvCfg.exe /action:config /product:odpm /frameworkversion:v4.0.30319 /providerpath:"C:\Users\me\OneDrive - company\Documents\2021\temp endToEnd\oracle.ManagedDataAccess.Core\oracle.manageddataaccess.core.3.21.50\lib\netstandard2.1\Oracle.ManagedDataAccess.dll"
    

    【讨论】:

    • 我在下载的包中没有看到 OraProvCfg.exe。你有我需要下载的链接吗?我确实看到了我的 Oracle.ManagedDataAccess.dll。有什么建议吗?
    • 检查oracle.com/database/technologies/… - 它包含在“XCopy”版本中。
    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多