ArgumentException Identifier''不符合CLS。关于序列化

时间:2011-03-01 10:38:18

标签: c# .net debugging exception serialization

我在调试此问题时遇到了问题。

现在已经在我正在处理的应用程序中发生了两次,并且仅在程序以发布模式运行时才会发生。程序在调试模式下运行良好: - (

当我尝试序列化对象时,我得到了ArgumentException。我跟踪了下一个变量序列化时的第一个异常:

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

我通过用字符串替换MyEnum2来回避这个问题,避开问题,然后在程序的不同区域再次出现问题。这次,当包含以下变量的对象被序列化时:

public SerializableDictionary<MyEnum1, MyObject> my_other_collection;

在这两种情况下,我都在使用Paul Welter的SerializableDictionary对象。我已经在程序的早期版本中使用过它,并且从未遇到过这个问题。后者的例外情况如下:

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

可以在pastebin

上查看异常的完整转储

我在SO上查看了许多符合CLS标准的警告/错误的帖子,但它们似乎不是同一个问题。我会很感激有关如何进一步调试此问题的一些提示,因为例外情况只发生在发布模式下运行时我的想法已经用完了!

3 个答案:

答案 0 :(得分:2)

OMG ......我生命中的5天被浪费了这个错误。

另一位开发人员在整个应用程序中添加了eazfuscator。我删除了eazfuscator插入的post build事件命令行,生活又好了。

显然,混淆和可序列化的类不是很好的组合!

答案 1 :(得分:0)

您可能正在尝试编码不符合cls的字符,''可能不是空格但可能是不可打印的字符。

您的程序是否必须符合CLS标准?如果您愿意,可以将标记和组装标记为不符合CLS。 (我不记得,因为我需要做这件事已经有一段时间了)

答案 2 :(得分:0)

有点迟了没有原版海报,但无论如何。

我收到此错误,因为我的公共财产未正确命名,他们必须以大写字母开头。

值得一提的是,这只发生在发布时,因为我打开了“警告为错误”。希望这有帮助