5

私のパワー シェル スクリプトでは、カスタム アセンブリを読み込んでから、そのアセンブリのクラスをNew-Object.

Assembly.LoadFile()正常に実行されますが、New-Objectステートメントは次の例外を返します。

New-Object : Exception calling ".ctor" with "1" argument(s): "Could not load file or assembly 'MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of i
ts dependencies. The system cannot find the file specified."

脚本:

[System.Reflection.Assembly]::LoadFile("MyAssembly.dll")
$a=New-Object MyAssembly.MyClass -ArgumentList "arg1"

このカスタム アセンブリは、次のアセンブリのみを参照します

System
System.Core
System.Runtime.Serialization
System.Xml.Linq
System.Data
System.Xml

以下のように System.Runtime.Serialization dll を明示的にロードしてみました。しかし、同じ例外

[System.Reflection.Assembly]::Load("System.Runtime.Serialization, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")

何か案が?

4

2 に答える 2

6

使用しないでくださいLoadFile。Powershell V2 を使用しているため、推奨される方法は次のとおりです。Add-Type

Add-Type -AssemblyName "MyLibrary.dll" 

http://www.dougfinke.com/blog/index.php/2010/08/29/how-to-load-net-assemblies-in-a-powershell-session/には、利用可能なさまざまな方法の優れたリストがありますライブラリを現在のシェル実行空間にインポートします。

http://technet.microsoft.com/en-us/library/hh849914.aspxは、Add-Type に関する Technet のドキュメントで、読み込まれたライブラリで静的メソッドを使用する方法などの例があります。

于 2013-08-26T15:36:59.163 に答える