2009-10-09 98 views
1

我嘗試使用Add-Type構建WPF應用程序,但失敗了。


$ a = @'
using System.Windows;
公共類節目
{
[STAThread()]
公共靜態無效的主要(字符串[]參數)
{
應用程式=新的應用程序();
Window1 w = new Window1();
app.Run(w);
}
}
「@

添加型-TypeDefinition美元-UsingNamespace 「System.Windows」


如何使用Add-Type C#代碼構建WPF應用程序

添加型的幫助文檔沒有-UsingNamespace的用法(和-ReferencedAssemblies), 所以我不明白...

回答

2

幾個問題:

$a = @' 
using System; 
using System.Windows; 

public class Program 
{ 
    [STAThread()] 
    public static void Main(string[] args) 
    { 
    Application app = new Application(); 
    Window w = new Window(); 
    app.Run(w); 
    } 
} 
'@ 
  • 缺少 「使用系統;」 STAThread的參考
  • 窗口w =新窗口() - 不是窗口1。

然後,編譯:

Add-Type -TypeDefinition $a -ReferencedAssemblies presentationcore, presentationframework, windowsbase 
  • 缺少WPF裝配refernces

最後:

ps> [program]::main(@()) 

最後一行只會工作,如果你正在使用PowerShell ISE,或者已經啓動了控制檯版本帶有-STA標誌的wershell 2.0。

最終這是一個學術演習。你真的應該使用像PowerBoots這樣成熟的產品(由另一張海報提到)。它所做的一切爲你努力工作(感謝Jaykul!)

-Oisin

+0

謝謝!!!對不起我的粗心大意。 btw,我應該什麼時候使用'-UsingNameSpace'? – hoge 2009-10-09 14:18:10

+0

ps> get-help add-type -parameter usingnamespace 這會告訴你,當使用MemberDefinition(通常用於快速p/invoke導入)而不是你的情況下,該參數屬於參數集,TypeDefinition(完整的c#程序) – x0n 2009-10-09 16:06:27

+0

i理解,再次感謝! – hoge 2009-10-09 16:43:11

0

我個人會放棄這種做法,並嘗試PowerBoots這是非常強大的PowerShell模塊,語法簡單,所有的基本功能可用的WPF的責任。

還有很多事情要做,比你在劇本中提出的要好,抱歉。

+0

我很抱歉,但我想知道的添加型,而不是使WPF應用程序的使用。 – hoge 2009-10-09 14:21:35

相關問題