C# WPF Assembly EntryPoint Invoke

Ghost_Rider_R

Lieutenant
Registriert
Nov. 2009
Beiträge
759
Hallo zusammen,

ich möchte gerne eine andere Anwendung (ebenfalls .NET) aus dem RAM heraus starten.
Mit WinForms Anwendungen funktioniert das einwandfrei, nur bei WPF Anwendungen wirft er eine Ausnahme:

IOException: Die Ressource "mainwindow.xaml" kann nicht gefunden werden.

Ich habe den Code mal auf ein ganz simples Beispiel heruntergebrochen:

1619522960453.png


Ich weiß, dass es bei WPF Anwendungen ja nicht diese klassiche Main Methode gibt, daran wird es wohl liegen, aber wie kann ich das trotzdem hinbekommen? hat da eventuell jemand ein Codesnipped zur Hand?

Wenn ich die klassiche Main-Methode in die jeweilige WPF-App einfüge, dann funktioniert es auch, aber das möchte ich eigentlich nicht so umsetzten.

Hat da jemand eine Idee?

Danke und LG

Ghost Rider
 

Anhänge

  • 1619523020294.png
    1619523020294.png
    21,6 KB · Aufrufe: 208
Option 1 sah für mich auf den ersten Blick sympathischer aus, allerdings will ich die WPF Anwendung ja im RAM starten, ohne dass diese als Datei auf der Platte liegt. Wie komme ich denn in dem Beispiel von AppDomain otherDomain an mein Assembly, welches ich invoke? in dem Beispiel wird ja auf eine EXE auf der Platte verwiesen...
 
falls du .Net Core bzw. .Net 5 benutzt wird beides nicht gehen, da AppDomain nur beim .Net Framework vorhanden ist.

zum eigentlichen Problem wo kommt den die Assembly her die du starten willst, weil irgendwie muss sie ja in den RAM kommen
 
Nein, keine .NET Core Anwendungen, nur ganz normal .NET Framework. Die Assembly liegt mir später in Form eines Byte Arrays vor, nur möchte ich diese nicht zuerst auf die Platte speichern, sondern direkt aus dem RAM starten.
 
Keiner ne Idee? ich bin mir sicher, dass es da einen 3-Zeiler gibt, damit das funktioniert, nur ich weiß leider nicht wie 🤔
 
Eine Anmerkung, hat nichts mit dem Thema zu tun, ist mir aber in deinem anderen Thread auch schon aufgefallen.

Warum postest du Bilder von deinem Code, anstatt Code-Tags zu verwenden?
 
Im zweiten von mir geposteten Link ist doch ein Beispiel mit Reflection (das untere Codefragment). Das dürfte auch gehen, wenn die Assembly nur im Memory vorhanden ist.
 
Ranayna schrieb:
Eine Anmerkung, hat nichts mit dem Thema zu tun, ist mir aber in deinem anderen Thread auch schon aufgefallen.

Warum postest du Bilder von deinem Code, anstatt Code-Tags zu verwenden?
Das ist natürlich nicht so sinnvoll, da gebe ich dir recht, ging gefühlsmäßig aber schneller.

cx01 schrieb:
Im zweiten von mir geposteten Link ist doch ein Beispiel mit Reflection (das untere Codefragment). Das dürfte auch gehen, wenn die Assembly nur im Memory vorhanden ist.
Das hatte ich erst gar nicht gesehen und wollte es gerade probieren, jedoch findet er diese Klassen nicht:

Application
BaseUriHelper

Wie kann ich die bekannt machen?
 
Steht mein ich auch im Link, welche Referenzen zu bei dir hinzufügen musst , damit es geht
 
Die vollen Namen der Klassen müssten sein:
  1. System.Windows.Application
  2. System.Windows.Navigation.BaseUriHelper
Die kannst du einfach in den Beispiel-Code einsetzen. Falls er diese Klassen nicht findet, musst du eventuell noch den Verweis auf WPF hinzufügen. Dafür in Visual Studio im Projektmappen-Explorer einen Rechtsklick auf "Verweise", dann "Verweis hinzufügen", dann links auf "Assemblys" und dann rechts nach "PresentationFramework" suchen und ein Häkchen dransetzen.
 
Wie kann ich darauf einen Verweis hinzufügen? im normalen .NET 4.72 tauchen diese Bibliotheken nicht unter den Verweisen auf.
 
Hm, also bei mir gibt es diese Assemblys unter .NET 4.7.2 und Visual Studio 2019. Wüsste jetzt nicht, wieso die nicht vorhanden sein sollten...
 
Vermutlich mache ich etwas falsch aber hier gebe ich doch die Verweise normalerweise an oder?

1620113068041.png
 
Du musst eine Verknüpfung auf die Bibliothek PresentationFramework hinzufügen. Steht auch so in der Doku und in den vorherigen Beiträgen.
 
Nur interessehalber, warum um alles in der Welt soll eine Assembly aus dem RAM heraus ausgeführt werden?

Ich rieche Sicherheitsprobleme. Und einen potentiell anschlagenden Virenscanner.
 
Zurück
Oben