使用XmlSerializer的InvalidProgramException

时间:2013-06-19 11:21:03

标签: .net xml serialization

我们有一个主要用4.0编写的WinForms应用程序,它将C#对象序列化为Xml时遇到了很大的问题。执行序列化的组件是3.5,但这应该不是问题。

使用Visual Studio在调试模式下运行很好,但是一旦我们从.exe运行应用程序,我们在序列化为Xml时会出现以下错误:

System.InvalidOperationException: There was an error generating the XML document. ---> System.InvalidProgramException: Common Language Runtime detected an invalid program.
   at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterFrmFrm.Write53_FrmTable(String n, String ns, FrmTable o, Boolean isNullable, Boolean needType)
   at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterFrmFrm.Write55_FrmFrm(String n, String ns, FrmFrm o, Boolean isNullable, Boolean needType)
   at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterFrmFrm.Write56_frm(Object o)
   --- End of inner exception stack trace ---
   at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
   at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o)

我已经尝试了许多不同的序列化方式到Xml,似乎没有任何改变结果,XmlSerializer.Serialize调用总是中断。这是我们的特别电话:

XmlSerializer serializer = new XmlSerializer(obj.GetType());
XDocument xmlDocument = new XDocument(new XDeclaration("1.0", "utf-8", "yes"));
using (XmlWriter documentWriter = xmlDocument.CreateWriter())
{
    serializer.Serialize(documentWriter, obj);
}
return xmlDocument;

值得注意的是,我们只在安装了.net 4.5的计算机上遇到此问题。如果我取消它并把4.0放在它上面工作正常。我也尝试在app.config中强制使用.net版本:

<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>

但也无济于事。

如果有人可以帮助解决这个问题,我将非常感激。

0 个答案:

没有答案