Добавление фоновой задачи UWP вызывает ошибки AppManifest - PullRequest
0 голосов
/ 18 мая 2018

Я пытался добавить в проект фоновую задачу вне процесса для обновления активной плитки моего приложения.Задача должна сделать вызов базы данных, чтобы получить некоторые данные, затем обработать эти данные, чтобы отправить несколько уведомлений плитки.

Мне удалось заставить его работать в одном проекте, который я создал специально для создания прототипа функциональности фоновой задачи.Однако, когда я пытался добавить фоновую задачу в свой основной проект, она выдает мне следующую ошибку:

Validation error. error 80080204: App manifest validation error: Line 33, Column 12, Reason: If it is not an audio background task, it is not allowed to have EntryPoint="BackgroundTasks.LiveTileTask" without ActivatableClassId in windows.activatableClass.inProcessServer. 

Я искал эту ошибку и нашел сообщение , в котором говорилось, что я должендобавьте тип аудио задачи, и ошибка исчезнет, ​​но тогда я получу другую ошибку.Я даже не пытаюсь воспроизводить звук в фоновом режиме, поэтому я не могу понять, почему UWP так считает.

Настройка моего проекта выглядит следующим образом:

  • 1 Проект UWP, нацеленный на обновление создателя осени в качестве минимальной / целевой версии.
  • 1 проект net standard 2.0 для базы данных (с EFcore)

Я пытался следовать рекомендациям, опубликованным Microsoft, и добавить проект WinRT исключительно для фоновой задачи, но это повсеместно создает проблемы совместимости с моим проектом .net standard 2.0и проект UWP.Я не очень опытный разработчик UWP, поэтому мне интересно, если кто-нибудь увидит что-то, что мне не хватает.

Каков наилучший подход к выполнению моей фоновой задачи?Достаточно ли внутрипроцессной фоновой задачи для обновления активной плитки из фона, даже если приложение не открыто?

РЕДАКТИРОВАТЬ: Я использую последнюю версию VS 2017 (15.7.1)

Ответы [ 3 ]

0 голосов
/ 27 мая 2018

Я столкнулся с той же проблемой.К сожалению, добавление аудио не является решением, так как это будет требованием для магазина Windows, но это не очень хорошая идея.Установка минимальной целевой версии дает вам очень ограниченные функциональные возможности Магазина Windows и меньше возможностей UWP.

Начните использовать эту ссылку и очень внимательно следуйте ей:

https://docs.microsoft.com/en-us/windows/uwp/launch-resume/create-and-register-a-background-task

Toрезюмируйте:

  • Убедитесь, что у вас есть хорошая копия вашего проекта, мой файл манифеста был поврежден во время эксперимента, и мне нужна резервная копия Package.appxmanifest.
  • Удалите все ссылки и код, относящийся кна все, что связано с фоновыми задачами из вашего проекта.
  • В вашем решении создайте новый проект Windows Universal / компонент среды выполнения Windows.
  • Назовите проект BackgroundTasks (в качестве примера)
  • Ссылки правой кнопкой мыши и управление пакетами Nuget
  • Выберите установленную вкладку и Microsoft.NETCore.UniversalWindowsPlatform
  • Измените версию с 6.1.4 на 6.0.8 (6.1.4 представляетсяпредварительная версия, которая вызывает добавление дополнительных нежелательных ссылок при каждой загрузке VS).
  • Изменить Class1.cs name to MyBackgroundTask.cs
  • Выберите целевую / минимальную версию проекта BackgroundTasks для Fall Creators Update
  • Щелкните правой кнопкой мыши свое решение / Зависимости проекта.Выберите BackgroundTasks и убедитесь, что порядок сборки правильный, у меня установлен BackgroundTasks для сборки перед основным проектом.
  • См. Пример кода в Образцы UWP , чтобы создать образец фоновой задачи.
  • Измените файл Package.appxmanifest, как описано в приведенной выше ссылке.
  • Постройте решение, и вы должны быть в бизнесе.

Лично я рекомендую использовать аут-процесс-фоновая задача, чтобы исключить любую возможную ошибку, которая, если фоновая задача не сработает, не повлияет на работу приложения, а также гораздо более гибкая.

В качестве подсказки ваш BackgroundTaskBuilder будет ссылаться как строки:

 builder.Name = "MyBackgroundTask";
 builder.TaskEntryPoint = "BackgroundTasks.MyBackgroundTask";

Мне кажется, что выполнять фоновые задачи в UWP довольно утомительно, но однажды сделанное хорошо стоит усилий.

0 голосов
/ 30 мая 2018

Я тоже выдернул себе волосы.В конце концов я решил эту проблему, просто установив для Target и Min версии соответственно обновление Fall Creators (сборка 16299) и (что наиболее важно) ноябрьское обновление (сборка 10586).

Примечание к выпуску 1 Выпуск RedStone 4 (версия 1803);сборка 17133) теперь доступна во время написания моего ответа, но я ограничил целевую версию до Fall Creators (и даже должен был восстановить свой компьютер для разработки до 1709; сборка 16299) из-за слишком большого количества проблем с разработкой моего проекта.

Примечание 2 Установка более поздней версии Min дала мне отсутствующую функциональность (например, отсутствующий символ System.Diagnostics.Trace).

0 голосов
/ 18 мая 2018

Спасибо за MSDN-Link, так как я наткнулся на точно такую ​​же проблему.

После всех различий по ссылке, я помог мне запустить мое приложение.Я выполнил следующие шаги:

  • добавление типа: аудио в мой appxmanifest manualy
  • Изменение проекта BackgroundTask на библиотеку классов среды выполнения Windows
  • Установка минимальной целевой версии на15063

Особенно последний шаг кажется обязательным, надеюсь, это не противоречит вашим желаемым потребностям.

...