我在调试此问题时遇到了问题。
现在已经在我正在处理的应用程序中发生了两次,并且仅在程序以发布模式运行时才会发生。程序在调试模式下运行良好: - (
当我尝试序列化对象时,我得到了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标准的警告/错误的帖子,但它们似乎不是同一个问题。我会很感激有关如何进一步调试此问题的一些提示,因为例外情况只发生在发布模式下运行时我的想法已经用完了!
答案 0 :(得分:2)
另一位开发人员在整个应用程序中添加了eazfuscator。我删除了eazfuscator插入的post build事件命令行,生活又好了。
显然,混淆和可序列化的类不是很好的组合!
答案 1 :(得分:0)
您可能正在尝试编码不符合cls的字符,''可能不是空格但可能是不可打印的字符。
您的程序是否必须符合CLS标准?如果您愿意,可以将标记和组装标记为不符合CLS。 (我不记得,因为我需要做这件事已经有一段时间了)
答案 2 :(得分:0)
有点迟了没有原版海报,但无论如何。
我收到此错误,因为我的公共财产未正确命名,他们必须以大写字母开头。
值得一提的是,这只发生在发布时,因为我打开了“警告为错误”。希望这有帮助