Lade und führe die WPF-DLL in eine andere WPF-Datei aus
Mein Hauptproblem ist, wie ich im Titel angegeben habe.
WPF_APP1 -> Ich habe eine DLL für dieses WPF-Projekt erstellt, nachdem App.xaml @ ausgeschlossen wurd
WPF_APP2 -> Normale WPF-Exe. Dies muss die obige WPF_APP1-DLL ausführen und das WPF_APP1-MainWindow-Formular mit Reflection öffnen.
Warum sage ich zum Nachdenken ist - WPF_APP2 zuerst die neuesten WPF_APP1.dll dann offen, so kann nicht die Referenz der DLL hinzufügen. muss nur die Reflection verwenden.
Wenn ich die obige DLL in Cmd-Projekt verwenden, ist es in Ordnung. Öffnen Sie das CMD-Fenster und starten Sie das WPF_APP1 MainWindow als Fensterform.
Aber jetzt muss ich dieses Fenster nicht in cmd öffnen, in WPF_APP2.
Bitte hilf mir
erwenden Sie den folgenden Code, um das @ CMD-Projekt zu öffne WPF_APP1 Hauptfenster
static void Main(string[] args)
{
Thread t = new Thread(ThreadProc);
t.SetApartmentState(ApartmentState.STA);
t.IsBackground = true;
t.Start();
Console.ReadLine();
}
private static void ThreadProc()
{
string loc = new FileInfo(Assembly.GetExecutingAssembly().Location).DirectoryName
+ "\\AutoUpdateTesting.dll";
Assembly dll = Assembly.LoadFile(loc);
foreach (Type type in dll.GetExportedTypes())
{
if (type.Name.Equals("MainWindow"))
{
dynamic n = null;
n = Activator.CreateInstance(type);
n.InitializeComponent();
System.Windows.Application apprun = new System.Windows.Application();
apprun.Run(n);
break;
}
}
}
Ich kann die Zeile nicht verwenden -
System.Windows.Application apprun = new System.Windows.Application();
In WPF_APP2 wegen AppDomain (fand diesen Grund bei Google). Versuchen Sie eine andere Alternative, aber kein Glück.
Bitte schauen Sie und teilen Sie Ihr Wissen. :)
arten auf Ihre Kommentare und Antwort.
Vielen Dan