尝试在 Windows Phone 8.1 中注册后台任务时出现“错误:未注册类(HRESULT 异常:0x80040154(REGDB_E_CLASSNOTREG))”。

16

在尝试在Windows Phone 8.1中注册后台任务时,我遇到了这个错误:

“Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))”。

我使用了以下代码而不是示例中的样本代码

Dim taskBuilder As New BackgroundTaskBuilder()
taskBuilder.Name = taskName
taskBuilder.TaskEntryPoint = taskEntryPoint
taskBuilder.SetTrigger(New SystemTrigger(SystemTriggerType.UserPresent, False))
taskBuilder.Register()

请问有什么可以帮到您的吗?


http://blogs.msdn.com/b/thunbrynt/archive/2014/04/10/windows-phone-8-1-for-developers-live-tiles.aspx - Hans Passant
你找到任何解决方案了吗? - asitis
3个回答

33

确保你的 taskEntryPoint 变量值与你在Package.appmanifest >>> Declarations >>> Background Tasks >>> Entry point中定义的Entry point: 值相匹配。


谢谢。我应该如何/为什么知道这个? - ZX9
很好的答案。例如,假设您的入口点是同一VS解决方案中后台任务项目的类,则应该是完全限定的类名和其命名空间(例如My_Background_Project_Name.MyBackgroundTask)。只需转到类文件以查找其名称和命名空间即可。 - Hong

6
我找到了答案(对我来说)。我在Package.appmanifest中的声明中没有注意大小写。在那里,我将入口点设置为Projectname.ClassName,当我在代码中设置SetTrigger时,我将其设置为ProjectName.ClassName。
哎呀,一个字母的差别真是大啊!

1
LOL!我犯了一个类似的错误,在Package.appmanifest中入口点引用中漏掉了一个字母。这个错误消息无比无助,真是令人惊讶。 - Rob.Kachmar
我正在尝试以下代码,并且得到了相同的错误:BackgroundTaskBuilder builder = new BackgroundTaskBuilder(); builder.Name = "Push Notifcation Task"; builder.TaskEntryPoint = typeof(PushNotificationBackgroundTask).FullName; builder.SetTrigger(new PushNotificationTrigger()); builder.Register(); 我已经在共享项目中添加了 PushNotificationBackgroundTask.cs,并在包清单中将其添加到 EntryPoint。 - Kinjan Bhavsar
我也错过了一个本应该大写的字母。这个答案指引了我正确的方向。 - JP Hellemons
谢谢你们提供的解决方案!FN' MSFT甚至没有给出任何信息性错误消息! - Tertium

0
对我来说,我犯了一个错误,就是把“后台任务”声明(在其中指定入口点)放到了BackgroundTask项目的appxmanifest中...而它需要放到注册后台任务的项目的appxmanifest中,而在我的情况下是UI项目。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接