我为WP7.1构建的应用程序(Silverlight& C#)在7.1设备上运行良好,但在WP8设备上运行不正常,由于这个原因,应用程序已从市场中移除(该应用程序在Marketplace中存在并被许多人使用用户直到WP8发布)。
我尝试在模拟器中调试问题。我在WP8模拟器中运行了7.1版本的应用程序。在其中一行代码中,我将字符串转换为double,为
double osVer = Convert.ToDouble("8.0.9903");
此行抛出
发生了'System.FormatException'类型的异常 mscorlib.ni.dll并未在托管/本地边界之前处理
我不知道mscorlib.ni.dll
是什么以及如何继续进行。有没有人有任何想法? 注意:该应用在WP7.1上正常运行。
答案 0 :(得分:3)
在其中一行代码中,我将字符串转换为double,为“double osVer = Convert.ToDouble(”8.0.9903“);”。
8.0.9903不是有效的双精度型,因为它有两个小数点。
<强>更新强>: 如果看到这一点,WP7和WP8都会抛出一个异常,所以看起来WP8上的应用程序从某个地方获得了不同格式的字符串。
答案 1 :(得分:2)
Convert.ToDouble
将使用当前的文化。因此,如果应用程序是使用具有差异小数分隔符的区域性执行的,则将抛出FormatException。
在大多数情况下,您需要在调用Convert.ToDouble
时明确提供文化:
Convert.ToDouble("8.0", CultureInfo.InvariantCulture);