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

时间:2018-05-18 07:07:38

标签: c# uwp background-task live-tile .net-standard-2.0

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

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

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)

6 个答案:

答案 0 :(得分:4)

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

使用此链接开始使用并仔细关注:

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

总结:

  • 确保您拥有项目的良好副本,我的最明显的文件在实验过程中损坏,我需要Package.appxmanifest备份副本。
  • 删除与项目中的后台任务有关的所有参考和代码。
  • 在您的解决方案中,创建一个新的Windows Universal / Windows Runtime 组件项目。
  • 将项目命名为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中制作后台任务非常繁琐,但一旦完成值得努力。

答案 1 :(得分:1)

感谢您使用MSDN-Link,因为我遇到了同样的问题。

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

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

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

答案 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)

我也拔掉了头发。我最终通过将Target和Min版本分别设置为Fall Creators Update(版本16299)和(最重要的)11月更新(版本10586)来解决它。

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

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