0

爲WP7.1構建的我的應用程序(Silverlight & C#)可以在7.1設備上正常工作,但不能在WP8設備上正常工作,出於這個原因,該應用程序已從Marketplace中刪除(該應用程序在Marketplace中已存在,並被許多用戶使用,直到WP8發佈)。WP8設備/模擬器上的WP7.1應用程序 - mscorlib.ni.dll中出現'System.FormatException'

我試着調試模擬器中的問題。我在WP8模擬器中運行了7.1版本的應用程序。在的代碼行中的一個我將字符串轉換成兼作

double osVer = Convert.ToDouble("8.0.9903"); 

這條線拋出

發生在 mscorlib.ni.dll和WASN類型「System.FormatException」的例外在託管/本地邊界之前未處理

我不知道mscorlib.ni.dll是什麼以及如何進一步處理。有沒有人有任何想法? 注意:該應用程序在WP7.1上正常工作。

+0

也許你可以簡單地使用'IsWP8'方法[在這裏描述](http://stackoverflow.com/a/13303187/863980)。 –

回答

3

在代碼的行之一,我將字符串轉換成兼作「雙osVer =轉換.ToDouble( 「8.0.9903」);」。

8.0.9903由於它有兩個小數點,因此不是有效的雙倍數。

UPDATE: 兩個WP7和WP8將拋出一個異常,如果這是看到的,所以它看起來像你的WP8應用程序是從什麼地方得到的字符串的不同格式。

2

Convert.ToDouble將使用當前文化。因此,如果應用程序在具有不同小數分隔符的文化下執行,則會引發FormatException。

在大多數情況下,你會打電話Convert.ToDouble時要明確提供文化:

Convert.ToDouble("8.0", CultureInfo.InvariantCulture); 
+0

試過Convert.ToDuble(「8.0.9903」,CultureInfo.InvariantCulture);.但它拋出了同樣的例外。 – saikamesh

+3

@saikamesh - 嗯,有兩個小數點。 –

相關問題