2013-10-03 84 views
0

我在空白的项目中运行下面的代码,并得到了“没有注册类(从HRESULT异常:0x80040154的(REGDB_E_CLASSNOTREG))”Geolocator.GetGeopositionAsync扔“类没有注册”异常C#

private Windows.Devices.Geolocation.Geolocator locator = new Windows.Devices.Geolocation.Geolocator(); 

    private async void Button_Click(object sender, RoutedEventArgs e) 
    { 
     try 
     { 
      var position = await this.locator.GetGeopositionAsync(); 
     } 
     catch (Exception ex) 
     { 
      //Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)) 
     } 
    } 

而且,我试着运行Geolocation Sample 8.1(c#和JS),但得到了相同的异常,我试图在1台PC上运行此示例,而不是在1台网络上运行。全部都一样。 我的笔记本电脑上有win8.1 rtm和VS2013 RC。

此外,我运行此代码和微软样本在ARM平板8.1 rtm 8.1 Pro预览(与GNSS模块)和平板电脑(i5-3317U处理器和无GPS模块)。我没有得到这个例外,所有的工作都很好。所以我认为它只发生在PC/Simulator上。 如何在PC/Simulator上测试GeoLocation应用程序?

回答

0

在8.0上测试这个代码 - 工作正常。 在8.1 rtm仍然没有类未注册的异常。 我想我需要添加一些库,但不知道在哪里。

UPD: 我发现问题在哪里。 我有Pro N win 8.1版本。在Pro N这段代码抛出异常。 对企业版本都工作正常。

+0

奇怪,它没有任何意义,“N和KN版本 N和KN版本中的功能与其等效的完整版本相同,但不包括Windows Media Player或其他Windows Media相关技术,例如Windows Media Center和Windows DVD Maker“。 –

+0

我知道,但它是事实:)我有4个电脑和2个笔记本电脑赢得8.1 ** PRO N **从1个磁盘安装。所有这些代码都有例外。如果有人有Pro N - 也许可以运行这个代码并检查它。 – zedkommander

+0

在msdn论坛上,一个人说他在Enterprise ** N **版本中重现了这个bug。 – zedkommander

1

代码工作,我测试了我的电脑上:

 private async void Button_Click(object sender, RoutedEventArgs e) 
    { 
     var locator = new Windows.Devices.Geolocation.Geolocator(); 
     var position = await locator.GetGeopositionAsync(); 
    } 

我与Visual Studio都在Windows 8测试2012 报还与Windows 8.1(预览版)和Visual Studio 2013(预览) 。只要能力确定了,就没有问题了。我没有下载示例,即使对于复杂的场景,代码也相当简单。看样本的灵感,但编码你自己的。总是更容易不必调试某人elses逻辑:)

代码被测试'在PC'以及模拟器(虽然应该没有区别,因为模拟器是你的电脑,因为它远程桌面到你自己的电脑)

确保您为定位功能:

enter image description here

使用的模拟器,如果你想设置一个特定的地址选项:

enter image description here

我的断点

enter image description here

如果所有的失败,做平常。卸载应用程序,清理并重建,重新启动计算机和Visual Studio,并检查位置功能是否通过在应用程序安装并运行后获取魅力栏来设置,然后选择权限。应该说,它有权限,见下图:

enter image description here

祝您好运!

+0

虹膜你好!是的,我尝试了你之前写的所有内容,但它不仅仅在我的电脑上工作。总结我在3台PC和1台笔记本电脑上测试了这些代码。 – zedkommander

0

至于说:“zedkommander”上面,从错误“N”版本的Windows COM 8.

但他没有给出解决方案,所以我要去给它:

微软员工确认此问题:

此行为确实是特定于“N”版本。要使地理位置在Windows的N版本上运行,需要安装Microsoft Media Feature Pack。

地理定位对WPD(Windows便携式设备)基础结构有依赖性,该功能在N版本中不存在,直到安装了功能部件包。

如果你要修复它,你需要点击此处安装“微软媒体功能包”:https://www.microsoft.com/fr-fr/download/details.aspx?id=30685

相关问题