「型が見つかりません」エラーの例
PS> $mail = New-Object System.Web.Mail.MailMessage New-Object : 型 [System.Web.Mail.MailMessage] が見つかりません。この型を含むアセンブリが読み込まれていることを確認してください。 発生場所 行:1 文字:19 + $mail = New-Object <<<< System.Web.Mail.MailMessage + CategoryInfo : InvalidType: (:) [New-Object]、PSArgumentException + FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand
手順1: まず MSDN でこのクラスのアセンブリを確認する
(例)MailMessage クラスhttp://msdn.microsoft.com/ja-jp/library/system.web.mail.mailmessage.aspx
アセンブリ: System.Web (System.Web.dll 内)
手順2: アセンブリ名を確認したら、そのアセンブリを読み込む
LoadWithPartialName
メソッドを使う場合PS> [System.Reflection.Assembly]::LoadWithPartialName("System.Web")
GAC Version Location --- ------- -------- True v2.0.50727 C:\windows\assembly\GAC_32\System.Web\2.0.0.0__b03f5f7f11d50a3a\System.Web.dllただし、
LoadWithPartialName
メソッドは便利だけど非推奨になっているので、正式にやるならば、次の Load
メソッドを使います。Load
メソッドはアセンブリの完全な表示名を要求されます。表示名に使う PublicKeyToken
など各項目は、目的の dll ファイルを右クリックして「プロパティ」を参照すれば分かります。Load
メソッドを使う場合PS> [System.Reflection.Assembly]::Load("System.Web, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=b03f5f7f11d50a3a")
正しく読み込まれたことを確認できます
PS> [AppDomain]::CurrentDomain.GetAssemblies() | FINDSTR System.Web
■ 関連する資料のリンク
.NET Framework 2.0 で廃止予定の型とメンバの一覧 (アセンブリ単位)
http://msdn.microsoft.com/ja-jp/library/cc825681.aspx
LoadWithPartialName(String partialName)
このメソッドは非推奨になりました。代わりに、Assembly.Load() を使用してください。
アセンブリの読み込みのベスト プラクティス
http://msdn.microsoft.com/ja-jp/library/dd153782.aspx
LoadWithPartialName メソッドは、現在は使用されない形式として設定されています。 代わりに Assembly.Load メソッドを使用して、アセンブリの完全な表示名を指定することをお勧めします。
Assembly.LoadWithPartialName メソッド
http://msdn.microsoft.com/ja-jp/library/system.reflection.assembly.loadwithpartialname.aspx
Assembly.Load メソッド
http://msdn.microsoft.com/ja-jp/library/system.reflection.assembly.load.aspx