我正在使用PowerShell對付Oracle,取得了很大的成功。沒有完整路徑的PowerShell添加類型OracleManagedDataAccess.dll
我正在使用ODP託管提供程序。由於提供者可以安裝在不同的位置,所以Add-Type -Path
需要在不同的機器上指向不同的方向。
我希望能夠以不依賴DLL的完整路徑的方式引用此程序集。
我正在使用PowerShell對付Oracle,取得了很大的成功。沒有完整路徑的PowerShell添加類型OracleManagedDataAccess.dll
我正在使用ODP託管提供程序。由於提供者可以安裝在不同的位置,所以Add-Type -Path
需要在不同的機器上指向不同的方向。
我希望能夠以不依賴DLL的完整路徑的方式引用此程序集。
我想你可能會從PowerShell的註冊表中獲取安裝目錄。一個可能的位置在這裏:
Get-ChildItem HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx\odp.net.managed
雖然這可能會有所不同,具體取決於哪個.NET版本安裝。你可以嘗試一個通配符爲:
Get-ChildItem HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\*\AssemblyFoldersEx\odp.net.managed
而最終,如果它是「(默認)」值,您可能需要獲得該註冊表項的屬性之一的值,例如:
(Get-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\*\AssemblyFoldersEx\odp.net.managed).'(default)'
我發現這個解決方案,它依賴於知道想要的組件的強名稱。它似乎在我已經完成的測試中可靠地工作
[void][reflection.assembly]::Load("Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342")
我看到這個工程。但是,當Oracle有新版本或者代碼在不同版本的機器上運行時,這怎麼比硬編碼的目錄路徑更好? – lit
似乎AssemblyFoldersEx不存在於64位框架中。 –