こんな感じ、
$source=@" using System.Windows.Forms; public class TestClass{ public void SayHello(string Name) { MessageBox.Show("★Hello " + Name); } public static string SayHelloStatic(string Name) { return "★こんにちは" + Name + "さん"; } } "@ Add-Type -Language CSharp -TypeDefinition $Source -ReferencedAssemblies System.Windows.Forms [TestClass]::SayHelloStatic("世界") $testObj = New-Object TestClass |
ヒア文字列でソースを定義し、Add-Typeに渡してやる。
参照設定は「ReferencedAssemblies」で。 言語はC#がデフォルトなので省略しても良い。
込み入った処理や、長い処理などは最初にVisualStudioで作ってから持ってくると良いかも・・・。
Add-Typeには1つ問題があって、一度コンパイルが通ったのちにソースを修正して再度実行すると、
Add-Type : 型を追加できません。型名 'TestClass' は既に存在しています。 発生場所 D:\PS\M06VBを利用する.ps1:16 文字:9 + Add-Type <<<< -Language CSharp -TypeDefinition $Source -ReferencedAssemblies System.Windows.Forms + CategoryInfo : InvalidOperation: (TestClass:String) [Add-Type]、Exception + FullyQualifiedErrorId : TYPE_ALREADY_EXISTS,Microsoft.PowerShell.Commands.AddTypeCommand |
同じ悩みの人は見つけたが解決には至ってなさそう。
コマンドラインから子セッションを開いてそこで実行するしかないのかな。
0 件のコメント:
コメントを投稿