0

我在空白项目中运行下一个代码并得到“类未注册(HRESULT 异常:0x80040154(REGDB_E_CLASSNOTREG))”

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。

此外,我在具有 8.1 Pro 预览版(带 GNSS 模块)的 ARM 平板电脑和具有 8.1 rtm 的平板电脑(i5-3317U 处理器和不带 GPS 模块)上运行此代码和 Microsoft 示例。我没有得到这个例外,一切正常。所以我认为它只发生在 PC/Simulator 上。如何在 PC/模拟器上测试 GeoLocation 应用程序?

4

3 回答 3

1

代码有效,我在我的电脑上测试了这个:

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

我在 Windows 8 和 Visual Studio 2012以及 Windows 8.1 (Preview) 和 Visual Studio 2013 (preview)上都进行了测试。只要设置了功能,就没有问题。我没有下载示例,即使对于复杂的场景,代码也相当简单。查看示例以获取灵感,但请自行编写代码。不必调试别人的逻辑总是更容易:)

代码在“PC”和模拟器上进行了测试(尽管应该没有区别,因为模拟器是您的 PC,因为它是您自己的计算机的远程桌面)

确保为位置设置功能:

在此处输入图像描述

如果需要,请使用模拟器中的位置选项设置特定地址:

在此处输入图像描述

我的断点

在此处输入图像描述

如果一切都失败了,照常做。卸载应用程序,清理并重建,重新启动计算机和 Visual Studio,并在应用程序安装和运行后使用获取超级按钮检查是否设置了位置功能,并选择权限。它应该说它有权限,见下文:

在此处输入图像描述

祝你好运!

于 2013-10-03T21:26:24.037 回答
0

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

UPD:我发现问题出在哪里。我有Pro N版本的 win 8.1。在Pro N中,此代码引发异常。在EnterprisePro版本上都可以正常工作。

于 2013-10-04T08:12:36.280 回答
0

正如上面所说的“zedkommander”,来自“N”版 Windows 8 的错误 com。

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

微软员工确认了这个问题:

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

地理位置依赖于 WPD(Windows 便携式设备)基础架构,在安装功能包之前,该基础架构不存在于 N 版本中。

如果你想修复它,你需要点击这里安装“Microsoft Media Feature Pack”:https ://www.microsoft.com/fr-fr/download/details.aspx?id=30685

于 2015-06-01T14:27:40.773 回答