Adding UWP Background task causes AppManifest errors

我的未来我决定 提交于 2019-11-27 06:18:06

问题


I've been trying to add an out of process background task to my project to update my App's live tile. The task needs to make a database call to get some data, then process that data to send out a few tile notifications.

I've managed to get it to work in one project that I created specifically for prototyping the background task functionality. However, when I tried to add a background task to my main project it gives me the following error:

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. 

I have searched for this error and found some post which said I should add the audio task type and the error would go away, but then I get a different error. I'm not even trying to play audio in the background, so it's beyond me why UWP thinks I am.

My project setup looks like this:

  • 1 UWP project targeting fall creator's update as min/target version.
  • 1 net standard 2.0 project for the database (with EFcore)

I've tried following the guidelines published by Microsoft, and add a WinRT project solely for the background task, but that gives compatibility issues all over the place with my .net standard 2.0 project and the UWP project. I'm not a very experienced UWP developer, so I'm wondering if anyone sees something that I'm missing.

What would be the best approach to getting my background task working? Is an in-process background task sufficient for updating the live tile from the background, even if the app is not opened?

EDIT: I'm using the latest version of VS 2017 (15.7.1)


回答1:


I hit the same issue. Unfortunately adding audio is not a solution as this will be a requirement for the windows store, not a good idea. Setting minimum target version gives you very limited Windows Store functionality and less UWP features.

Get started by using this link and follow it very carefully:

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

To summarise:

  • Ensure you have a good copy of your project, my manifiest file became corrupted during experimentation and I needed the Package.appxmanifest backup copy.
  • Delete all references and code relating to anything to do with background tasks from your project.
  • In your solution create a new Windows Universal / Windows Runtime Component project.
  • Name the project BackgroundTasks (as an example)
  • Right click references and Manage Nuget Packages
  • Select the installed tab and Microsoft.NETCore.UniversalWindowsPlatform
  • Change the version from 6.1.4 to 6.0.8 (6.1.4 seems to be a preview version which causes extra unwanted references to be added everytime VS is loaded).
  • Change Class1.cs name to MyBackgroundTask.cs
  • Select the BackgroundTasks project Target / Min version to Fall Creators Update
  • Right click your solution / Project Dependancies. Select BackgroundTasks and check the build order is correct, mine is set for BackgroundTasks to build before the main project.
  • Refer to the sample code at UWP Samples to create the sample background task.
  • Change the Package.appxmanifest file as described on the above link.
  • Build the solution and you should be in business.

Personally I recommend to use an out-of-process background task to eliminate any possibly that if the background task crashes it does not affect the app from running, also much more flexible.

As a tip your BackgroundTaskBuilder will reference as strings:

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

I find making background tasks in UWP quite tedious, but once done well worth the effort.




回答2:


Thank you for the MSDN-Link since I stumbled uppon exact the same problem.

Following all the discriptions from the link helped me starting my app. I followed this stepps:

  • adding Type:audio to my appxmanifest manualy
  • Changing the BackgroundTask Project To a Windows Runtime Class Library
  • Setting the Minimum Target Version to 15063

Especialy the last step seems mandatory, hope this does not conflict with your desired needs.




回答3:


I only had to add a reference to the BackgroundTask project in the main project.




回答4:


VS2019
win10 & build target 1903 (build 18362)
Microsoft.NETCore.UniversalWindowsPlatform ver 6.2.9

I'm got same problem
My solution is change TargetDeviceFamily tag in file Package.appxmanifest
Name="Windows.Universal" to "Windows.Desktop" (or your devices target)

Maybe some devices need ActivatableClassId, and other not. Good luck




回答5:


I pulled out my hair on this one too. I finally solved it by just setting the Target and Min version respectively to Fall Creators Update (build 16299) and (most crucial) the November Update (build 10586).

Side note 1 RedStone 4 release (version 1803; build 17133) is now avail at the time of writing my answer but I limited the Target version to Fall Creators (and even had to restore my development PC back to 1709; build 16299) due to too many issues with the development with my project.

Side note 2 Setting the Min version further back gave me missing functionality (like a missing System.Diagnostics.Trace symbol).



来源:https://stackoverflow.com/questions/50405649/adding-uwp-background-task-causes-appmanifest-errors

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!