添加UWP后台任务会导致AppManifest错误

Fli*_*pey 5 c# live-tile background-task uwp .net-standard-2.0

我一直在尝试向我的项目添加进程外后台任务,以更新App的实时磁贴。该任务需要进行数据库调用以获取一些数据,然后处理该数据以发出一些平铺通知。

我设法使其在一个专为原型背景任务功能创建的项目中工作。但是,当我尝试将后台任务添加到主项目中时,出现以下错误:

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. 
Run Code Online (Sandbox Code Playgroud)

我已经搜索了此错误,并找到了一些帖子,说我应该添加音频任务类型,该错误会消失,但是随后出现另一个错误。我什至不尝试在后台播放音频,因此UWP认为我是我的本职。

我的项目设置如下所示:

  • 1个UWP项目,针对秋季创建者的最低/目标版本进行更新。
  • 1个用于数据库的net standard 2.0项目(使用EFcore)

我已经尝试按照Microsoft发布的指南进行操作,并添加一个仅用于后台任务的WinRT项目,但是这在与.net standard 2.0项目和UWP项目有关的所有位置都存在兼容性问题。我不是一个非常有经验的UWP开发人员,所以我想知道是否有人看到我缺少的东西。

什么是使我的后台任务正常工作的最佳方法?即使未打开应用,进程内后台任务是否足以从后台更新实时磁贴?

编辑:我正在使用最新版本的VS 2017(15.7.1)

pet*_*ria 5

我遇到了同样的问题。不幸的是,添加音频不是解决方案,因为这将是 Windows 商店的要求,不是一个好主意。设置最低目标版本会为您提供非常有限的 Windows 应用商店功能和较少的 UWP 功能。

开始使用此链接并非常小心地遵循它:

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

总结一下:

  • 确保你有一个好的项目副本,我的清单文件在实验过程中损坏了,我需要 Package.appxmanifest 备份副本。
  • 从项目中删除与后台任务相关的所有引用和代码。
  • 在您的解决方案中,创建一个新的 Windows 通用/Windows 运行时组件项目。
  • 将项目命名为 BackgroundTasks(作为示例)
  • 右键单击引用并管理 Nuget 包
  • 选择已安装的选项卡和 Microsoft.NETCore.UniversalWindowsPlatform
  • 将版本从 6.1.4 更改为 6.0.8(6.1.4 似乎是一个预览版本,这会导致每次加载 VS 时都会添加额外的不需要的引用)。
  • 将 Class1.cs 名称更改为 MyBackgroundTask.cs
  • 选择 BackgroundTasks 项目 Target / Min version to Fall Creators Update
  • 右键单击您的解决方案/项目依赖项。选择BackgroundTasks并检查构建顺序是否正确,我的设置为BackgroundTasks在主项目之前构建。
  • 请参阅UWP 示例中的示例代码以创建示例后台任务。
  • 按照上述链接中的说明更改 Package.appxmanifest 文件。
  • 构建解决方案,您应该可以开展业务。

我个人建议使用进程外后台任务来消除任何可能,如果后台任务崩溃,它不会影响应用程序的运行,也更灵活。

作为提示,您的 BackgroundTaskBuilder 将作为字符串引用:

 builder.Name = "MyBackgroundTask";
 builder.TaskEntryPoint = "BackgroundTasks.MyBackgroundTask";
Run Code Online (Sandbox Code Playgroud)

我发现在 UWP 中制作后台任务非常乏味,但一旦完成就值得付出努力。


gab*_*geo 5

我只需要在主项目中添加对BackgroundTask 项目的引用。


Ray*_*ink 0

感谢您提供 MSDN-Link,因为我偶然发现了完全相同的问题。

按照链接中的所有说明帮助我启动了我的应用程序。我按照以下步骤操作:

  • 手动将 Type:audio 添加到我的 appxmanifest
  • 将BackgroundTask 项目更改为Windows 运行时类库
  • 将最低目标版本设置为 15063

特别是最后一步似乎是强制性的,希望这不会与您期望的需求相冲突。