Я создал приложение, которое должно отображать уведомления о тостах на Windows 10, каждый раз, когда FileSystemWatcher
обнаруживает изменение. Я использую пространства имен Microsoft.Toolkit.Uwp.Notifications
и Windows.UI.Notifications
. При запуске кода в VS2019 с включенным отладчиком он работает без нареканий, но после установки приложения с помощью самописного установщика WiX я получаю сообщение об ошибке, после которого приложение закрывается.
Сообщение об ошибке довольно generi c, и я не знаю, где искать:
Не удалось отобразить уведомление для [FileSystemWatcher Name].
Элемент не найден. (Исключение из HRESULT: 0x80070490)
в Windows .UI.Notifications.ToastNotificationManager.CreateToastNotifier ()
в ...
в ... остальная часть callstack из приложения, указывающая на метод с CreateToast
Класс, отвечающий за создание и отображение тостов
using System;
using Windows.Data.Xml.Dom;
using Microsoft.Toolkit.Uwp.Notifications;
using Windows.UI.Notifications;
namespace MyApp.Notifs
{
public class NotificationToaster
{
private string appID;
//appID is read from the Properties
public NotificationToaster(string appID)
{
this.appID = appID;
}
public void ShowToast(string title, string content)
{
string toastXmlString =
$@"<toast>
<visual>
<binding template=""ToastGeneric"">
<text hint-maxLines=""1""> {title} </text>
<text> {content} </text>
<group>
<subgroup>
<text> {DateTime.Now} </text>
</subgroup>
</group>
</binding>
</visual>
<audio src=""ms-winsoundevent:Notification.Default""/>
</toast>";
CreateToast(toastXmlString);
}
private void CreateToast(string toast)
{
//Load Toast data from string to XML
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(toast);
// Create the toast notification
ToastNotification toastNotif = new ToastNotification(xmlDoc);
//Attach Manager to raise notifications
var toastNotifier = ToastNotificationManager.CreateToastNotifier(appID);
// And send the notification
toastNotifier.Show(toastNotif);
}
}
}
После небольшого поиска я попробовал несколько решений.
Первым делом я попытался упаковать приложение в Windows Проект упаковки приложений , как описано здесь . (Я еще не перенес проект WPF из Framework в Core.)
В более старых публикациях здесь, в SO, предлагается использовать идентификатор приложения в качестве параметра при создании уведомителя. Делая это с stati c GUID, он прекращает отправку уведомлений, пока удаляются все точки останова. Вне отладки программа больше не обрабатывает sh, но уведомления также не отправляются.
Любой указатель на то, что здесь может быть не так, очень помог бы.