问题
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