2011-08-02 99 views
9

我有一個調用C#庫中的方法的Powershell腳本。該庫的DLL加載爲:Powershell DLL加載

[Reflection.Assembly]::LoadFrom("$automationHome\dll\abc.dll") | Out-Null 

現在,我的C#庫在其中使用另一個庫xyz.dll。我相信我不需要在Powershell腳本中加載它,因爲abc.dll會解決它。不過,我得到一個錯誤說:

無法加載文件或程序集「XYZ,版本1.0.0.0 =, 文化=中性公鑰= null或它的一個依賴。 系統找不到指定的文件。

有人可以告訴我如何解決這個問題嗎?

回答

6

LoadFrom()應該理想地查找xyz.dll在同一目錄abc.dll

如果您正在從同一目錄下的DLL腳本,添加以下,然後做LoadFrom()

$currentScriptDirectory = Get-Location 
[System.IO.Directory]::SetCurrentDirectory($currentScriptDirectory.Path) 
1

確保依賴項dll xyz位於LoadLibrary將使用的路徑中。我認爲在你的情況下,對於PowerShell腳本來說任何東西都是本地的,任何東西在Power shell腳本的子目錄中,或者路徑變量或GAC中的任何東西。

0

幾個想法:

從abc.dll引用xyz.dll(添加引用)是否將特定版本屬性設置爲true(默認設置),並且您使用的是遲到r版本的xyz.dll?

對於某些程序集來說,讓它們工作的唯一方法是將它們加載到GAC中。您可能想嘗試將xyz加載到GAC中。