2011-03-01 61 views
2

我在調試這個問題時遇到了麻煩。ArgumentException標識符''不符合CLS。序列化

它現在已經發生了兩次,現在正在運行的應用程序中,只有當程序在發佈模式下運行時纔會發生。該程序運行在調試模式下:-(

我得到ArgumentException的罰款時,我試圖將對象序列我跟蹤的第一個例外,當市以下變量連載到:

public SerializableDictionary<MyEnum1, SerializableDictionary<MyEnum2, Double>> my_collection; 

我回避。通過用串置換MyEnum2,迴避問題問題它然後在程序的總不同區域再次出現了這一次,當包含以下變量的對象被序列:

public SerializableDictionary<MyEnum1, MyObject> my_other_collection; 

在兩種情況下我」 m使用Paul Welter的SerializableDictionary對象。我在程序以前的版本中使用過這個,並且從未遇到過這個問題。後者的例外情況如下:

System.ArgumentException: Identifier ' ' is not CLS-compliant. 
    Parameter name: ident 

異常的完全轉儲可以pastebin

觀看我已經在SO,但他們不認爲在一些崗位上有符合CLS的警告/錯誤似乎不是同一個問題。我將不勝感激關於如何進一步調試此問題的一些提示,因爲只有在發佈模式下運行時纔會發生異常,所以我的想法已經不多了!

+0

它可以是一個編碼問題?從哪裏到哪裏(德)序列化? – rene 2011-03-01 10:46:38

回答

0

您可能試圖對不符合cls的字符進行編碼,「'可能不是空格,但可能是不可打印的字符。

您的程序是否必須符合CLS?如果您願意,您可以將標記和彙編視爲不符合CLS。 (我不記得有多久,因爲我已經有一段時間了,因爲我需要這樣做)

+0

感謝您的建議。我在AssemblyInfo.cs中設置了'[assembly:CLSCompliant(false)]',但仍然有異常。該對象只包含雙精度和整數變量,我無法看到非打印字符將來自哪裏。 – th3hamburgler 2011-03-01 11:10:06

1

OMG ...我的生命5天已經浪費了這個錯誤。

另一個dev已經添加eazfuscator到整個應用程序。我刪除了由eazfuscator插入的post build event命令行,生活又恢復了良好。

顯然,混淆和可序列化的類不是很好的組合!

0

有點晚,不是原來的海報,但無論如何。

我收到這個錯誤,因爲我的公共財產的地方沒有正確命名,他們不得不以大寫字母開頭。

可能值得一提的是,這隻發生在開發版本時,因爲我已經打開了「Warning as Error」警告。希望這有助於