我的应用程序在启动时生成一堆序列化程序集。在这种情况下,我遇到了一个错误,因为XmlSerializer无法生成其中一个序列化程序集。我可以去检查正在生成的临时代码文件,发现它包含无效字符(只有一个)。这是一个临时文件的例子:
Reader.MoveToElement();
if (Reader.IsEmptyElement) {
Reader.Skip();
$ return o;
}
正如您所看到的,"$"是一个无效字符。这使得csc.exe稍后失败。
是什么让XmlSerializer生成这样的文件。
我建议尝试一下SGEN工具-http://msdn.microsoft.com/en-us/library/bk3w6240(v=vs.100).aspx
该工具将获取一个程序集并生成相应的XmlSerializer程序集,而您在运行时生成该程序集时遇到问题。
SGEN工具可能会为您提供一些额外的信息,说明您遇到此问题的原因——编译错误和警告。
使用SGEN的另一个好特性是,您的第一个xml序列化将更快,因为应用程序不再需要对xml结构进行运行时编译,而只需加载XmlSerializer DLL。
希望这能让你们更接近问题所在。