【发布时间】:2014-03-10 19:03:33
【问题描述】:
我已在我的程序中添加了地理定位支持,但我遇到了一个不知道如何处理的问题。我正在使用 VS 2012。
我在我的解决方案中添加了一个 DLL,它可以进行所有地理定位调用。我在 .csproj 文件中将支持的 Windows 版本设置为 8.1。 DLL 项目也使用 .NET 4.5,而解决方案中的其余项目使用 .NET 4.0。
我在检索位置的方法中有以下代码:
protected override void Initialize() {
// Initialization code here
ParseGeoposition(); // Exception is thrown on this line
}
private void ParseGeoPositin() {
// . . .
bool done = false;
while ( !done )
try {
if ( UseCoordinate ) {
newPosition.Position.Latitude = positionRecord.Coordinate.Latitude;
newPosition.Position.Longitude = positionRecord.Coordinate.Longitude;
} else {
newPosition.Position.Latitude = positionRecord.Coordinate.Point.Position.Latitude;
newPosition.Position.Longitude = positionRecord.Coordinate.Point.Position.Longitude;
}
done = true;
} catch ( MissingMethodException ) {
if ( !UseCoordinate ) {
throw new NotSupportedException( "This machine does not support the Windows Geolocation API." );
}
UseCoordinate = false;
}
// . . .
}
UseCoordinate 标志以 true 开头。代码应该切换到使用Point 属性(通过将UseCoordinate 设置为false 如果不支持Coordinate 属性。
代码在我的 Windows 8.1 开发机器上运行良好。但是,当我将它安装在 Windows 8.0 机器上时,A MissingMethodException 被抛出在调用包含此代码的方法的行上。就好像没有尝试一样。抛出的异常如下:
System.MissingMethodException:找不到方法:'Windows.Devices.Geolocation.Geopoint Windows.Devices.Geolocation.Geocoordinate.get_Point()'。
显然我的方法是有缺陷的。我不想查看 Windows 版本号,因为我的经理不希望我这样做。编写此代码的正确方法是什么
【问题讨论】:
-
这是桌面应用程序,不是 Windows 商店应用程序
标签: c# .net windows-store-apps