首页 文章

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

提问于
浏览
3

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

我已经设法让它在我专门为后台任务功能原型设计创建的一个项目中工作 . 但是,当我尝试将后台任务添加到我的主项目时,它给出了以下错误:

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)

3 回答

  • 1

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

    使用此链接开始使用并非常仔细地遵循它:

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

    总结一下:

    • 确保您拥有项目的良好副本,我的最明显的文件在实验过程中损坏,我需要Package.appxmanifest备份副本 .

    • 删除与项目中的后台任务有关的所有参考和代码 .

    • 在您的解决方案中,创建一个新的Windows Universal / Windows运行时组件项目 .

    • 将项目命名为BackgroundTasks(作为示例)

    • 右键单击引用和管理Nuget包

    • 选择已安装的选项卡和Microsoft.NETCore.UniversalWindowsPlatform

    • 将版本从6.1.4更改为6.0.8(6.1.4似乎是预览版本,导致每次加载VS时都会添加额外的不需要的引用) .

    • 将Class1.cs名称更改为MyBackgroundTask.cs

    • 选择BackgroundTasks项目目标/最小版本到Fall Creators Update

    • 右键单击您的解决方案/项目依赖项 . 选择BackgroundTasks并检查构建顺序是否正确,为主项目之前构建的BackgroundTasks设置了mine .

    • 请参阅UWP Samples处的示例代码以创建示例后台任务 .

    • 更改Package.appxmanifest文件,如上面的链接所述 .

    • 构建解决方案,您应该开展业务 .

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

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

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

    我发现在UWP中完成后台任务非常繁琐,但一旦做得非常值得付出努力 .

  • 3

    感谢MSDN-Link,因为我遇到了同样的问题 .

    从链接的所有描述帮助我启动我的应用程序 . 我跟着这个步骤:

    • 添加类型:音频到我的appxmanifest manualy

    • 将BackgroundTask项目更改为Windows运行时类库

    • 将最小目标版本设置为15063

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

  • -1

    我也拔掉了头发 . 我最后通过将Target和Min版本分别设置为Fall Creators Update(build 16299)和(最关键的)11月Update(build 10586)来解决它 .

    附注1 RedStone 4发布(版本1803;版本17133)现在可用于编写我的答案,但我将目标版本限制为Fall Creators(甚至必须将我的开发PC恢复到1709;构建16299)由于我的项目开发过多的问题 .

    附注2进一步设置最小版本让我失去了功能(如a缺少System.Diagnostics.Trace符号) .

相关问题