我一直在尝试向我的项目添加进程外后台任务以更新我的应用程序的动态磁贴。该任务需要进行数据库调用以获取一些数据,然后处理该数据以发送一些磁贴通知。
我已经设法让它在我专门为后台任务功能原型(prototype)设计创建的一个项目中工作。但是,当我尝试向我的主项目添加后台任务时,出现以下错误:
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.
我搜索了这个错误并找到了一些 post它说我应该添加音频任务类型并且错误会消失,但后来我得到了一个不同的错误。我什至没有尝试在后台播放音频,所以我不明白为什么 UWP 认为我是。
我的项目设置如下所示:
- 1 个 UWP 项目将秋季创作者的更新作为最低/目标版本。
- 1 个用于数据库的 net standard 2.0 项目(使用 EFcore)
我已尝试遵循 Microsoft 发布的指南,并添加一个专用于后台任务的 WinRT 项目,但这会给我的 .net 标准 2.0 项目和 UWP 项目带来兼容性问题。我不是一个非常有经验的 UWP 开发人员,所以我想知道是否有人看到我遗漏的东西。
让我的后台任务正常运行的最佳方法是什么?进程内后台任务是否足以从后台更新动态磁贴,即使应用未打开?
编辑:我正在使用最新版本的 VS 2017 (15.7.1)
最佳答案
我遇到了同样的问题。不幸的是,添加音频不是解决方案,因为这将是 Windows 商店的要求,不是一个好主意。设置最低目标版本会为您提供非常有限的 Windows 应用商店功能和较少的 UWP 功能。
开始使用此链接并非常仔细地遵循它:
https://learn.microsoft.com/en-us/windows/uwp/launch-resume/create-and-register-a-background-task
总结一下:
- 确保您拥有一份完整的项目副本,我的 list 文件在实验过程中损坏了,我需要 Package.appxmanifest 备份副本。
- 从您的项目中删除与后台任务相关的所有引用和代码。
- 在您的解决方案中创建一个新的 Windows 通用/Windows 运行时 组件项目。
- 将项目命名为 BackgroundTasks(作为示例)
- 右键单击引用并管理 Nuget 包
- 选择已安装的选项卡和 Microsoft.NETCore.UniversalWindowsPlatform
- 将版本从 6.1.4 更改为 6.0.8(6.1.4 似乎是预览版,导致每次加载 VS 时都会添加额外的不需要的引用)。
- 将 Class1.cs 名称更改为 MyBackgroundTask.cs
- 选择 BackgroundTasks 项目的目标/最低版本到 Fall Creators Update
- 右键单击您的解决方案/Project Dependancies。选择 BackgroundTasks 并检查构建顺序是否正确,我的设置为 BackgroundTasks 在主项目之前构建。
- 请参阅 UWP Samples 处的示例代码创建示例后台任务。
- 按照上述链接中的说明更改 Package.appxmanifest 文件。
- 构建解决方案,您就可以开展业务。
我个人建议使用进程外后台任务来排除任何可能,即使后台任务崩溃了也不会影响应用程序的运行,也更加灵活。
作为提示,您的 BackgroundTaskBuilder 将引用为字符串:
builder.Name = "MyBackgroundTask";
builder.TaskEntryPoint = "BackgroundTasks.MyBackgroundTask";
我发现在 UWP 中执行后台任务非常乏味,但一旦完成就值得付出努力。
关于c# - 添加 UWP 后台任务导致 AppManifest 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50405649/