У меня есть следующий код:
class Program
{
static void Main(string[] args)
{
string xml = @"<ArrayOfUserSetting>
<UserSetting>
<Value>Proposals</Value>
<Name>LastGroup</Name>
</UserSetting>
<UserSetting>
<Value>Visible</Value>
<Name>WidgetsVisibility</Name>
</UserSetting>
</ArrayOfUserSetting>";
List<UserSetting> settings =
GetObjFromXmlDocument<List<UserSetting>>(xml);
}
public static T GetObjFromXmlDocument<T>(string xml)
{
T customType;
XmlSerializer serializer = new XmlSerializer(typeof(T));
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml(xml);
using (XmlNodeReader xmlNodeReader = new XmlNodeReader(xmlDocument))
{
customType = (T)serializer.Deserialize(xmlNodeReader);
}
return customType;
}
}
[Serializable]
public class UserSetting
{
public string Value { get; set; }
public string Name { get; set; }
}
Код работает нормально, и вызов GetObjFromXmlDocument выдает коллекцию List. Тем не менее, я всегда получаю первое случайное исключение типа System.IO.FileNotFoundException
в mscorlib.dll, когда выполняется XmlSerializer serializer = new XmlSerializer(typeof(T));
.
Итак, я вошел в Debug / Exception и включил Managed Debugging Assistants. В этой строке я получил следующее:
Сборка с отображаемым именем «mscorlib.XmlSerializers» не удалось загрузить в контексте привязки «LoadFrom» AppDomain с идентификатором 1. Причина сбоя: System.IO.FileNotFoundException: не удалось загрузить файл или сборку ' mscorlib.XmlSerializers, версия = 2.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089 'или одна из ее зависимостей. Система не может найти указанный файл.
Имя файла: 'mscorlib.XmlSerializers, версия = 2.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089'
Может кто-нибудь объяснить, почему это происходит? Что я могу сделать с классом UserSetting
, чтобы проблема исчезла? Приложение очень чувствительно к производительности, и я бы не стал исключением.