XmlSerializer生成无效的临时文件并导致csc.exe失败



我的应用程序在启动时生成一堆序列化程序集。在这种情况下,我遇到了一个错误,因为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。

希望这能让你们更接近问题所在。

最新更新