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()