2011-08-02 34 views
9

私はC#ライブラリのメソッドを呼び出すPowershellスクリプトを持っています。ライブラリのdllは次のように読み込まれます。Powershell dllのロード

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

ここで、C#ライブラリは別のライブラリxyz.dllを使用しています。 abc.dllが解決するので、Powershellスクリプトでこれを読み込む必要はないと私は信じています。しかし、私はというエラーを取得しています:

は「 カルチャニュートラル、PublicKeyToken = = null XYZ、バージョン= 1.0.0.0」またはその依存関係の1つをファイルまたはアセンブリをロードできませんでした。 システムは、指定されたファイルを見つけることができません。

誰かがこれを修正する方法を教えてください。

答えて

6

LoadFrom()は、理想的には、あなたがたDLLと同じディレクトリからスクリプトを実行している場合は、abc.dll

と同じディレクトリにxyz.dllを探し下記を追加しLoadFrom()

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

依存関係dll xyzがLoadLibraryが使用するパスにあることを確認してください。私はあなたのケースでは、PowerShellスクリプトのローカルなもの、パワーシェルスクリプトのサブディレクトリの何か、またはpath変数かGACの何かになると思います。

0

を行う必要があります

abc.dll(参照の追加)のxyz.dllへの参照で、特定のバージョンのプロパティがtrue(デフォルト設定)に設定されていて、 xyz.dllのrバージョン?

一部のアセンブリでは、それらを動作させる唯一の方法は、それらをGACにロードすることです。 xyzをGACにロードすることをお勧めします。