XmlSerializer загружает неправильную сборку - PullRequest
0 голосов
/ 28 февраля 2012

У меня есть решение «Первый», которое состоит из нескольких проектов.Один из проектов ссылается на библиотеки других проектов.Я добавляю их через просмотр в определенное место.Когда я запускаю другое решение «Второе» с помощью одного простого приложения для Windows, я добавляю ссылку на «Первый» и два проекта «Первого», которые расширяют один из другого.Я добавляю ссылки с помощью кода из «First».

Теперь в «First» у меня есть эта строка кода:

OneProject hello = OneProjectList[OneProjectList.Count - 1];
StringWriter sw = new StringWriter();
XmlSerializer serializer=new XmlSerializer(hello.GetType(),new Type[]{typeof(OneProject)});
serializer.Serialize(sw, hello);

Проект падает на последней строке.Исключение говорит, что {"[A] Something.X не может быть приведен к [B] Something.X. Тип A происходит от" Something, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null "в контексте" LoadFrom "врасположение 'goodLocation'. Тип B происходит от 'EL_CL, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = null' в контексте 'LoadNeither' в расположении 'C: \ Users \ John \ AppData \ Local \ Microsoft \ VisualStudio \8.0 \ ProjectAssemblies \ p3www12k01 \ EL_CL.dll '. "}

В окне« Вывод »в VS я имею:« devenv.exe »(управляемый): загружен« C: \ Users \ John \ AppData \ Local »\ Microsoft \ VisualStudio \ 8.0 \ ProjectAssemblies \ p3www12k01 \ Something.dll ', символы не загружены.

Почему загружается эта сборка?Эта строка в окне «Вывод» отображается во время serializer.Serialize (sw, hello); и сразу после этого происходит сбой программы.

Обратите внимание, что Something = hello.GetType ().

1 Ответ

0 голосов
/ 28 февраля 2012

Работает ли это, если вы извлекаете дополнительный массив Type из конструктора XmlSerializer?

XmlSerializer serializer = new XmlSerializer(hello.GetType); 
...