我一直在尝试向项目中添加一个进程外后台任务来更新我的应用程序的实时磁贴。该任务需要进行数据库调用以获取一些数据,然后处理该数据以发送一些磁贴通知。
我设法让它在我专门为后台任务功能原型设计创建的一个项目中工作。但是,当我尝试将后台任务添加到我的主项目时,它给出了以下错误:
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认为我的原因超出了我的意思。
我的项目设置如下:
我已尝试遵循Microsoft发布的指南,并仅为后台任务添加WinRT项目,但这会在我的.net标准2.0项目和UWP项目中产生兼容性问题。我不是一位经验丰富的UWP开发人员,所以我想知道是否有人看到了我失踪的东西。
让后台任务有效的最佳方法是什么?即使应用程序未打开,进程后台任务是否足以从后台更新实时磁贴?
编辑:我使用的是最新版本的VS 2017(15.7.1)
答案 0 :(得分:4)
我遇到了同样的问题。不幸的是,添加音频不是一个解决方案,因为这将是Windows商店的要求,不是一个好主意。设置最低目标版本可为您提供非常有限的Windows应用商店功能和更少的UWP功能。
使用此链接开始使用并仔细关注:
https://docs.microsoft.com/en-us/windows/uwp/launch-resume/create-and-register-a-background-task
总结:
就我个人而言,我建议使用进程外后台任务来消除任何可能的情况,如果后台任务崩溃,它不会影响应用程序运行,也更灵活。
作为提示,您的BackgroundTaskBuilder将引用为字符串:
builder.Name = "MyBackgroundTask";
builder.TaskEntryPoint = "BackgroundTasks.MyBackgroundTask";
我发现在UWP中制作后台任务非常繁琐,但一旦完成值得努力。
答案 1 :(得分:1)
感谢您使用MSDN-Link,因为我遇到了同样的问题。
根据链接的所有描述帮助我启动我的应用程序。 我跟着这个步骤:
特别是最后一步似乎是强制性的,希望这不会与您的期望需求相冲突。
答案 2 :(得分:1)
我只需要在主项目中添加对BackgroundTask项目的引用即可。
答案 3 :(得分:0)
在我的项目中将最低目标版本设置为15063,为我解决了此错误。
答案 4 :(得分:0)
我遇到了同样的问题并找到了解决方案。 您需要为 EntryPoint 指定完整的命名空间:
<Extensions>
<Extension Category="windows.backgroundTasks" EntryPoint="FullNameSpace.Background.ToastNotificationBackgroundTask">
<BackgroundTasks>
<Task Type="systemEvent"/>
</BackgroundTasks>
</Extension>
</Extensions>
</Application>
</Applications>
答案 5 :(得分:-1)
附注1 RedStone 4发布(版本1803;版本17133)现在可用于编写我的答案,但我将目标版本限制为Fall Creators(甚至必须将我的开发PC恢复到1709;构建16299 )由于我的项目开发过多问题。
附注2进一步设置Min版本让我失去了功能(比如缺少System.Diagnostics.Trace符号)。