2009-10-09 54 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

相关问题