アセンブリのロード

自分メモ。

グローバルアセンブリ

[VOID][System.Reflection.Assembly]::Load("System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");

アセンブリ"System.Web"のロードは、AssemblyName を使って下のようにも書ける。書く量が増えて面倒くさいけど。

$asmName = new-object System.Reflection.AssemblyName;
$asmName.Name = 'System.Web';
$asmName.Version = new-object System.Version(2, 0, 0, 0);
$asmName.CultureInfo = new-object System.Globalization.CultureInfo("");
$asmName.SetPublicKeyToken(@([byte]0xb0, [byte]0x3f, [byte]0x5f, [byte]0x7f, [byte]0x11, [byte]0xd5, [byte]0x0a, [byte]0x3a));
[VOID][System.Reflection.Assembly]::Load($asmName);

プライベートアセンブリ

System.Reflection.Assembly.Load() を使う場合は、文字列を引数にとるLoad()に、アセンブリのパスを直接わたすとエラーになる。Load()を使う場合は、AssemblyNameを使わないといけないくさい。

$asmName = [System.Reflection.AssemblyName]::GetAssemblyName('アセンブリのパス');
[VOID][System.Reflection.Assembly]::Load($asmName);

System.Reflection.Assembly.LoadFile() だったら、そのままアセンブリのパスを渡せばよい。

[VOID][System.Reflection.Assembly]::LoadFile('アセンブリのパス');