如何使用Add-Type C#代码构建WPF应用程序
我尝试使用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), 所以我不明白...
几个问题:
$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
我个人会放弃这种做法,并尝试PowerBoots这是非常强大的PowerShell模块,语法简单,所有的基本功能可用的WPF的责任。
还有很多事情要做,比你在剧本中提出的要好,抱歉。
我很抱歉,但我想知道的添加型,而不是使WPF应用程序的使用。 – hoge 2009-10-09 14:21:35
谢谢!!!对不起我的粗心大意。 btw,我应该什么时候使用'-UsingNameSpace'? – hoge 2009-10-09 14:18:10
ps> get-help add-type -parameter usingnamespace 这会告诉你,当使用MemberDefinition(通常用于快速p/invoke导入)而不是你的情况下,该参数属于参数集,TypeDefinition(完整的c#程序) – x0n 2009-10-09 16:06:27
i理解,再次感谢! – hoge 2009-10-09 16:43:11