Как создать приложение WPF с помощью кода Add-Type C #

StackOverflow https://stackoverflow.com/questions/1543578

  •  20-09-2019
  •  | 
  •  

Вопрос

я попытался создать приложение WPF с помощью Add-Type, но это не удалось.


$a = @'
использование системы.Windows;
программа публичных занятий
{
[STAThread()]Статхред()
public static void Main(строка[] аргументов)
{
Приложение app = новое приложение ();
Window1 w = новое Window1();
приложение.Запустить(w);
}
}
'@

Добавить-Тип -определение типа $a -с использованием пространства имен "System.Windows"


Справочный документ Add-Type не содержит значений -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); 
   } 
 } 
'@
  • Отсутствует ссылка "using System;" для STAThread
  • Window w = новое окно() - НЕ Window1.

Затем скомпилируйте с помощью:

Add-Type -TypeDefinition $a -ReferencedAssemblies presentationcore, presentationframework, windowsbase
  • Отсутствующие ссылки на сборку WPF

Наконец - то:

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

Эта последняя строка будет работать, только если вы используете PowerShell ISE или запустили консольную версию powershell 2.0 с флагом -STA.

В конечном счете, это академическое упражнение.Вам действительно следует использовать зрелый продукт, такой как PowerBoots (упомянутый на другом плакате).Это сделало всю тяжелую работу за тебя (спасибо, Джейкул!)

-Ойсин

Другие советы

Лично я бы отказался от такого подхода и попробовал Пауэрботы Это очень мощный модуль PowerShell с простым синтаксисом и всеми доступными базовыми возможностями WPF.

К сожалению, предстоит сделать гораздо больше, чем то, что вы представили в сценарии.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top