Laden...

WPF und ToastNotificationManager: Erstellen der App Identity mit einem packaging project funktioniert nur in der Visual Studio-Umgebung, nicht in der published EXE

Erstellt von EmilDev vor 2 Jahren Letzter Beitrag vor 2 Jahren 152 Views
E
EmilDev Themenstarter:in
10 Beiträge seit 2021
vor 2 Jahren
WPF und ToastNotificationManager: Erstellen der App Identity mit einem packaging project funktioniert nur in der Visual Studio-Umgebung, nicht in der published EXE

Hallo und danke im Voraus,

Ich habe ein Problem mit einer WPF-Anwendung, die die ToastNotificationManager-Klasse verwendet:
Die ToastNotificationManager-Klasse benötigt eine App-Identity.
Ich habe diese Lösung gefunden, die am Anfang gut zu funktionieren schien:
https://www.thomasclaudiushuber.com/2019/04/26/calling-windows-10-apis-from-your-wpf-application/

Im Abschnitt "Create an Identity for Your WPF App" hat Thomas ausführlich beschrieben, wie man einer Lösung ein Windows-Anwendungspaketierungsprojekt als Startprojekt hinzufügen kann, um die App-ID zu erhalten.
Dies hat sehr gut funktioniert.
Aber nur in der Entwicklungsumgebung, also wenn ich meine Anwendung aus der Visual Studio 2019-Umgebung starte und teste
Sobald ich die App publishe (mit der Option "produce-single-file"), funktioniert sie nicht.

Die Fehler gehen eindeutig in die Richtung, dass die App-Identität fehlt. Der Fehler tritt nach dem Aufruf der Methode "ToastNotificationManager.CreateToastNotifier()" auf.

Hat jemand eine Idee, warum die Lösung mit dem Setzen der App-ID mit dem zusätzlichen Application-Packaging-Projekt als Startprojekt nur beim Aufruf der App aus der Visual Studio-Umgebung funktioniert? Und wie könnte ich es lösen, damit es auch als veröffentlichte exe-Datei läuft?

Ich habe zwei Ideen - aber ich bin ein Anfänger in C#, also gehe ich davon aus, dass Ihr bessere Ideen habt 😉

  1. Manuelles Erstellen eine App-ID. Aber ich finde keine gute Lösung, wie ich eine solche ID selbst erstellen kann, welches Format, welchen Datentyp sie haben muss, scheint ziemlich komplex zu sein
  2. Ich könnte versuchen, meine App in eine UWP-Anwendung umzuwandeln - dann hätte ich kein Problem mit der App-ID. Aber ich habe diese App mit UWP angefangen und bin an Grenzen gestoßen, so dass ich gezielt auf WPF umgestiegen bin. Wahrscheinlich funktionieren andere Teile meiner Anwendung nicht, wenn ich zurück zu UWP wechsle ...

Vielen Dank für Euren Rat !

Viele Grüße
Emanuel

16.807 Beiträge seit 2008
vor 2 Jahren

Vorweg zur Technologie:
UWP war mal der Ansatz eine Multi Plattform UI herstellen zu können, was in weiten Teilen nicht funktioniert hat; es hat zuviel ausgeschlossen und wurde nicht akzeptiert.
Daher gibts Unterschiede zu WPF, was Du schon entdeckt hast.
Die neueste Welt nennt sich MAUI und kommt mit .NET 6: GitHub - dotnet/maui: .NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.

Self Contained Apps und Manifest-Dateien waren nicht immer unterstützt bzw. weiß ich gar nicht, ob das mittlerweile unterstützt wird; musst mal schauen.
Aber im Debugging wirds funktionieren, weil beim Debugging kein Self Contained Mechanismus ausgelöst.

Mein Halbwissen: IIRC brauchst Du das aber mittlerweile nicht mehr, siehe
Call Windows Runtime APIs in desktop apps - Windows apps