【问题标题】:How to build a WPF application with Add-Type C# code如何使用 Add-Type C# 代码构建 WPF 应用程序
【发布时间】:2010-12-05 08:10:56
【问题描述】:

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


$a = @'
使用 System.Windows;
公开课课程
{
[STAThread()]
公共静态 void Main(string[] args)
{
应用程序 = 新应用程序();
Window1 w = new Window1();
应用程序运行(w);
}
}
'@

添加类型 -TypeDefinition $a -UsingNamespace "System.Windows"


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

【问题讨论】:

    标签: wpf powershell powershell-2.0


    【解决方案1】:

    几个问题:

    $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 参考
    • Window w = new Window() - NOT Window1。

    然后,编译:

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

    最后:

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

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

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

    -奥辛

    【讨论】:

    • 谢谢!!!我很抱歉我的粗心。顺便说一句,我什么时候应该使用“-UsingNameSpace”?
    • ps> get-help add-type -parameter usingnamespace 这将告诉您在使用 MemberDefinition(通常用于快速 p/invoke 导入)时该参数属于参数集,而不是您的情况,TypeDefinition(完整c#程序)
    【解决方案2】:

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

    除了您在脚本中提供的内容之外,还有很多事情要做,抱歉。

    【讨论】:

    • 对不起,我想知道 Add-Type 的用法,而不是制作 wpf 应用程序。
    猜你喜欢
    • 1970-01-01
    • 2019-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多