【发布时间】:2013-11-19 20:34:30
【问题描述】:
我的应用程序在启动时会生成一堆序列化程序集。在这种情况下,我收到一个错误,因为 XmlSerializer 无法生成其中一个序列化程序集。我可以去检查正在生成的临时代码文件,我发现它包含无效字符(只有一个)。这是来自其中一个临时文件的示例:
Reader.MoveToElement();
if (Reader.IsEmptyElement) {
Reader.Skip();
$ return o;
}
如您所见,“$”是一个无效字符。这使得 csc.exe 稍后失败。
什么能让 XmlSerializer 生成这样的文件。
【问题讨论】:
-
请显示您正在执行的生成包含错误的上述代码的步骤。这就是问题所在,我们需要查看能够向您指出问题的步骤。
-
我的代码可能非常简单。像下面这样的东西会做:var s = new XmlSerializer(typeof(MyClass))。细节在于背景中发生的事情。 XmlSerializer 将生成代码来编写 MyClass 所需的序列化器。此代码由 csc.exe 编译,结果是一个程序集,其中包含读/写 MyClass 实例所需的类。我的问题是自动生成的代码(通过 XmlSerializer)包含非法字符,当然 CSC 无法编译它。
-
请make a edit 并显示
MyClass的结构,并显示var s = new XmlSerializer(typeof(MyClass))之间的代码以及导致CSC出错的步骤。很抱歉,在您更新您的问题之前,我必须投票结束,因为:“有关您编写的代码问题的问题必须描述具体问题 - 并包含重现它的有效代码 -在问题本身。有关指导,请参阅SSCCE.org。您需要向我们展示如何重现该问题,否则无论我们多么愿意,我们都无法帮助您。 -
很抱歉,我的班级与这个问题无关。这个问题与我的任何类(或它们的序列化程序)无关。该问题并不总是在生成相同的序列化程序时发生,无效字符也不相同。有时文件包含其他无效字符,而且它永远不会在同一个地方。
-
我相信序列化器要正常工作,你必须有一个类的默认构造函数。因此,无效字符可能是类中代码的直接结果(或者缺少默认构造函数代码)。这显示了 Scott 对类代码的请求以及序列化类的代码的有效性。最终,这可能与您的问题无关,但这是我的最佳猜测,因为这是我在 XmlSerializer 中遇到的唯一问题。
标签: c# xmlserializer csc