我可以在.NET4.0项目中使用System.XML2.0吗?

我可以在.NET4.0项目中使用System.XML2.0吗?,.net,reflection,xml-serialization,.net,Reflection,Xml Serialization,我需要在刚刚从.NET2.0升级的.NET4.0项目中反序列化一组XML文件。由于使用了序列化函数,反序列化现在失败了,因为我的类从中继承的第三方对象库中的一组属性没有标记为[XmlIgnore] 问题:我可以使用反射从.NET 4.0项目的System.Xml.dll的2.0版本调用反序列化()函数吗 我试过: Assembly.Load(“System.Xml,Version=2.0.0.0,PublicKeyToken=b77a5c561934e089”) 但是这失败了,FileNotFo

我需要在刚刚从.NET2.0升级的.NET4.0项目中反序列化一组XML文件。由于使用了序列化函数,反序列化现在失败了,因为我的类从中继承的第三方对象库中的一组属性没有标记为[XmlIgnore]

问题:我可以使用反射从.NET 4.0项目的System.Xml.dll的2.0版本调用反序列化()函数吗

我试过:

Assembly.Load(“System.Xml,Version=2.0.0.0,PublicKeyToken=b77a5c561934e089”)

但是这失败了,FileNotFoundException(它确实搜索GAC,对吗?

您不能-AFAIK

当您为项目设置目标框架时,就是这样。您可以得到System.Xml 2.0或4.0


然而,我对2.0和4.0之间串行化的区别感到困惑。当然,2.0中有
[XmlIgnore]
吗?

您可以编写一个针对framework2的wee dll来返回该类的v2版本,然后从中填充v4版本。在那里的某个地方/某处插上一面旗帜,你可以在装载时把它们翻过来


您确定反序列化失败的原因吗?我希望它能够向后兼容,事实上,这种想法并不可怕……

是的,但在.NET 4.0中,如果没有set方法的属性未标记为[XmlIgnore],反序列化会引发异常因为它们在我的类继承的第三方库中。我知道,这听起来很明显,但是你不能得到第三方库的更新吗?我可以,这可能是我要走的路。它是开源的:根据给出的答案,我认为这将是最小的痛苦…是的,我肯定,我同意这很可怕。此代码将在2.0中传递,但不会在4.0中传递,除非您使用[XmlIgnore]标记SomeProperty。您得到的错误是InvalidOperationException-错误CS0200:无法将属性或索引器(…)分配给--它是只读的,但我将尝试第二种汇编方法。。。值得一提的是,这里还有一个关于序列化版本控制问题的参考,尽管它有点令人困惑:。表示它将在3.5SP1中修复,但显然在4.0中仍然存在