Могу ли я использовать System.Xml 2.0 в проекте .NET 4.0? - PullRequest
2 голосов
/ 21 марта 2012

Мне нужно десериализовать несколько файлов XML в проекте .NET 4.0, который был только что обновлен с .NET 2.0.Поскольку функции сериализации изменились , десериализация теперь не выполняется, поскольку набор свойств в сторонней библиотеке объектов, от которой унаследованы мои классы, не помечен [XmlIgnore].

Вопрос: Можновызвать функцию Deserialize () из версии 2.0 System.Xml.dll из проекта .NET 4.0, используя отражение?

Я пробовал:

Assembly.Load("System.Xml, Version=2.0.0.0, PublicKeyToken=b77a5c561934e089");

, но это не удалось с FileNotFoundException (он выполняет поиск в GAC, верно?)

Ответы [ 2 ]

1 голос
/ 21 марта 2012

Вы могли бы написать крошечную dll, нацеленную на framework2, чтобы вернуть версию класса v2, а затем заполнить версию v4. Где-нибудь / где-нибудь есть флаг, и вы можете перевернуть их, когда они загружены.

Вы уверены, что десериализация терпит неудачу, я бы ожидал, что она обратно совместима, на самом деле идея, что это не так, довольно страшна ...

1 голос
/ 21 марта 2012

Вы не можете - AFAIK.

Когда вы устанавливаете целевой фреймворк для своего проекта, это так.Вы получаете либо System.Xml 2.0, либо 4.0.

Тем не менее, я запутался в разнице между сериализацией между 2.0 и 4.0.Конечно, [XmlIgnore] был там в 2.0?

...