MonadからVB.NETのコードを実行
VBCodeProviderを利用すると、VB.NETのコードをMonadから実行できます。
例えば、Beta2のMonadではSTAスレッドで実行が必要なオブジェクトは動作しませんが、
VBCodeProviderを利用してVB.NETのコードを書けば、実現できるわけです。
インコードコンパイルでMsgBox関数を実行する
以下は、MsgBoxを実行するサンプルです。
$provider = new-object Microsoft.VisualBasic.VBCodeProvider $params = new-object System.CodeDom.Compiler.CompilerParameters $params.GenerateInMemory = $True $refs = "System.dll","Microsoft.VisualBasic.dll","System.Data.DLL", ` "System.management.dll","System.DirectoryServices.dll" $params.ReferencedAssemblies.AddRange($refs) # VB.NET EXAMPLE $txtCode = @' Imports Microsoft.VisualBasic Imports System Imports System.Threading Public Class VBDotNetTest Sub Main() MsgBox("MonadからVB.NETのコードを実行", 0, "タイトル") End Sub End Class '@ $results = $provider.CompileAssemblyFromSource($params, $txtCode) $mAssembly = $results.CompiledAssembly $i = $mAssembly.CreateInstance("VBDotNetTest") $r = $i.main()