C# XmlSerializer BindingFailure

Я получаю BindingFailure в строке кода с помощью XmlSerializer:

XmlSerializer s = new XmlSerializer(typeof(CustomXMLSerializeObject));

сборка с отображаемым именем CustomXMLSerializeObject.XmlSerializers "не удалось загрузить в контексте привязки "LoadFrom" AppDomain с идентификатором 1. Причиной сбоя стала: система.ИО.FileNotFoundException: не удалось загрузить файл или сборку XMLSerializeObject.XmlSerializers, Version=1.4.0.0, Culture=neutral, PublicKeyToken=null' или одна из его зависимостей. Система не может найти указанный файл.

ошибка довольно длинная и продолжает объяснять информацию о состоянии предварительной привязки и места, где она пыталась найти файл.

пользовательский объект, который я пытаюсь десриализовать, относительно прост - просто куча частных целых чисел и строк с общедоступными аксессорами. У меня есть частная переменная, которая является другим пользовательским сериализуемым классом, но у этого нет ничего, кроме частных строк с общедоступными аксессорами в он.

неловко? Это происходит только когда я десериализации. Эта строка кода отлично работает, когда я сериализую объект. Он отлично работает, и объект десериализуется и заполняется отлично. Не замечайте потери производительности или длительного времени загрузки.

что именно это предупреждение (не ошибка или исключение, программа работает нормально после этого)? Почему это происходит? Как предотвратить это, не отключая предупреждение?

4 ответов


по данным странная ошибка XmlSerializer:

Это исключение является частью Нормальная работа XmlSerializer. Он ожидается и будет пойман и обрабатывается внутри кода фреймворка. Просто игнорируй это и продолжай. Если это беспокоит вас во время отладки, установите Отладчик Visual Studio только для остановки необработанные исключения вместо всех исключения.

вероятно, это вызвано вашими исключениями, которые вы выбираете мониторинг.

можете ли вы сказать мне, как ваши исключения настроены: Debug - > Exceptions

Если вы снимите флажок" брошенный " для BindingFailure под управляемыми помощниками отладки, исключение должно исчезнуть. Или, если вы не хотите этого делать, вы можете просто продолжить, так как это исключение по дизайну


используйте следующий метод для создания экземпляра xmlSerializer, чтобы устранить проблему:

XmlSerializer s = XmlSerializer.FromTypes(new[] { typeof(CustomXMLSerializeObject) })[0];

тогда вам не нужно отключать обработчики исключений.


по данным MS VS 2010 обратная связь вот как он был разработан. Чтобы предотвратить это исключение и предотвратить замедление во время выполнения, необходимо создать сборку XML-сериализатора.

есть три инструмента, которые я смог найти: Microsoft SGen, XGenPlus и Mvp.XML.Репутации онлайн. На данный момент, к сожалению, ни один из них не обновлялся с 2007 года.


хорошо, я нашел решение. Я никогда не мог принять отключение исключений в качестве ответа. Просто это как-то неправильно....

похоже, что в предыдущих сборках или предыдущих версиях текущей сборки определенные ссылки использовались извне. Несмотря на то, что ваш код, возможно, уже давно отказался от этих ссылок, имена все еще, некоторые таинственные где-то, ищутся в сборке.

перейдите в AssemblyInfo.cs файлы и найти ThemeInfo:

[assembly: ThemeInfo(
ResourceDictionaryLocation.ExternalAssembly, //where theme specific resource dictionaries are located
//(used if a resource is not found in the page, 
// or application resource dictionaries)
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
//(used if a resource is not found in the page, 
// app, or any theme specific resource dictionaries))]

измените первое местоположение на "нет":

[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
//(used if a resource is not found in the page, 
// or application resource dictionaries)
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
//(used if a resource is not found in the page, 
// app, or any theme specific resource dictionaries))]

и держите ваши исключения включенными! Я буду публиковать этот ответ на различные вопросы подобного рода.