Как создать приложение WPF с помощью кода Add-Type C #
-
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.
К сожалению, предстоит сделать гораздо больше, чем то, что вы представили в сценарии.