У меня есть приложение UWP, которое состоит из 2 основных частей: проекта UWP с пользовательским интерфейсом и проекта WinForms, который используется для обеспечения функциональности панели задач.Я использую проект Windows Application Packaging, чтобы объединить их, как в этом примере: https://docs.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-extend#show-a-modern-xaml-ui.
Когда приложение запускается, приложение WinForm запускается первым и находится в системном трее.При выборе одного из пунктов меню приложение UWP запускается и переходит на соответствующую страницу, используя подход протокола из примера (т. Е. Windows.System.Launcher.LaunchUriAsync("myapp://action?key=value");
).Это работает нормально.
Проблема, с которой я столкнулся, заключается в том, что я хотел бы иметь возможность общаться из приложения UWP с приложением WinForms (может быть, в некоторых случаях и другим способом).Я пытаюсь добиться этого с помощью расширения службы приложений.Я следовал примеру здесь: https://stefanwick.com/2017/06/24/uwp-app-with-systray-extension/.Однако я не могу заставить это работать.Я не совсем уверен, в каком проекте должны быть объявления fulltrust и службы приложений.
Если я помещаю их в свой проект UWP, как в примере, я всегда получаю ошибку AppServiceUnavailable (имя определенно правильное - японятия не имею, к какой версии относится документация для этого статуса, но я не вижу, как это может быть неверно).Это происходит независимо от того, открыто ли приложение UWP в данный момент или нет.Раньше у меня этот подход работал, но только когда не было задействовано ни одного проекта упаковки приложений Windows, и сначала запустилось приложение UWP, которое мне не нужно.
Если я помещаю объявления в проект упаковки приложений Windows (настройкаисполняемый файл службы приложения и точка входа в класс приложения проекта UWP), я получаю ошибку AppUnavailable, которая, как мне кажется, означает, что она выходит из строя на более раннем этапе.
Кто-нибудь знает, как мне это работает?Если по какой-либо причине это невозможно, может кто-нибудь указать мне правильное направление для достижения этой идеи (приложение UWP, которое не запускает никаких окон при запуске и находится в системном трее с двунаправленным обменом сообщениями между любыми необходимыми компонентами).
РЕДАКТИРОВАТЬ: Целевая версия: 17763, минимальная версия: 16299, версия Windows: 17763
EDIT2: я создал небольшое тестовое решение, которое, надеюсь, показывает, что я пытаюсь сделать лучше: https://github.com/csuzw/AppServiceTest.