1

我尝试使用 Add-Type 构建 WPF 应用程序,但失败了。


$a = @'
使用 System.Windows;
公共类程序
{
[STAThread()]
public static void Main(string[] args)
{
Application app = new Application();
Window1 w = new Window1();
应用程序运行(w);
}
}
'@

Add-Type -TypeDefinition $a -UsingNamespace "System.Windows"


Add-Type的帮助文档没有-UsingNamespace(和-ReferencedAssemblies)的用法,所以我不太明白......

4

2 回答 2

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 = new Window() - 不是 Window1。

然后,编译:

Add-Type -TypeDefinition $a -ReferencedAssemblies presentationcore, presentationframework, windowsbase
  • 缺少 WPF 程序集引用

最后:

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

最后一行仅在您使用 PowerShell ISE 或使用 -STA 标志启动控制台版本或 powershell 2.0 时才有效。

归根结底,这是一项学术活动。你真的应该使用像 PowerBoots 这样的成熟产品(另一张海报提到)。它为您完成了所有艰苦的工作(感谢 Jaykul!)

-Oisin

于 2009-10-09T13:30:12.633 回答
0

我个人会放弃这种方法并尝试PowerBoots它是非常强大的 PowerShell 模块,具有简单的语法和 WPF 可用的所有基本可能性。

抱歉,除了您在脚本中介绍的内容之外,还有更多工作要做。

于 2009-10-09T13:21:34.333 回答