Я использую Visual Studio 2010, C #.
Я работаю над этой программой уже почти год.В нем я использую информацию, хранящуюся в отдельных файлах XML, для создания изображений.Этот процесс работал для меня сотни раз без проблем.
Я мигрировал на новую машину.Предыдущая машина была 32-битной, новая - 64-битной.Когда я открываю файл и пытаюсь десериализовать, выдается следующее исключение:
System.InvalidCastException не обработано. Message = [A] System.Collections.Generic.List 1[BookCreator.pageFontInfo] cannot be cast to
[B]System.Collections.Generic.List
1 [BookCreator.pageFontInfo].Тип A происходит от «mscorlib, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089» в контексте «LoadNeither» в расположении «C: \ Windows \ Microsoft.Net \ assembly \ GAC_64 \ mscorlib \ v4.0_4.0.0»..0__b77a5c561934e089 \ mscorlib.dll.Тип B происходит от «mscorlib, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089» в контексте «LoadNeither» в расположении «C: \ Windows \ Microsoft.Net \ assembly \ GAC_64 \ mscorlib \ v4.0_4.0.0»..0__b77a5c561934e089 \ mscorlib.dll '.
Вот код, который генерирует ошибку:
List<pageFontInfo> info;
XmlSerializer serializer = new XmlSerializer(typeof(List<pageFontInfo>));
TextReader tr = new StreamReader(openFile);
info = (List<pageFontInfo>)serializer.Deserialize(tr); <---error thrown
pageFontInfo - это специально созданная Serializable структура.Он содержит две строки, число с плавающей точкой и список точек.Я понятия не имею, что происходит не так.Я сравнил два «происхождения» списков, и они идентичны.Я в полном недоумении.До миграции это работало сотни раз.
Редактировать: Я только что проверил.Я запустил скомпилированный .exe и исходный код на другом компьютере, который был 64-разрядным.То, что происходит сейчас, не имеет к этому никакого отношения.Это специфично для этой установки Visual Studio 2010.