Я получаю:BinaryFormatter Deserialize дает SerializationException
System.Runtime.Serialization.SerializationException: Не удается найти сборку «myNameSpace, Version = 1.0.0.0, культура = нейтральной, PublicKeyToken = нуль
При попытке десериализовать некоторые данные в другой программе, чем программа, с которой она была сериализована.
После некоторого поиска в Интернете я обнаружил, что, по-видимому, это можно сделать только с помощью общей сборки.
Однако моя база данных заполнена этими сериализованными объектами, и мне нужна служебная программа, чтобы получить их. Есть ли способ переопределить это поведение и просто передать ему тот же самый класс и заставить его десериализовать?
Я уже нашел этот фрагмент, но я не понимаю, как и где я должен его использовать/использовать.
static constructor() {
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
}
static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) {
Assembly ayResult = null;
string sShortAssemblyName = args.Name.Split(',')[0];
Assembly[] ayAssemblies = AppDomain.CurrentDomain.GetAssemblies();
foreach (Assembly ayAssembly in ayAssemblies) {
if (sShortAssemblyName == ayAssembly.FullName.Split(',')[0]) {
ayResult = ayAssembly;
break;
}
}
return ayResult;
}
Реферирования оригинальной сборки в вашей утилите приложении не вариант? –
@eric: некоторые только еще не получили ответа ... поэтому я не могу их принять. Но я просмотрю их снова, чтобы узнать, добавлены ли новые ответы/комментарии – Toad
любое окончательное решение с полным образцом исходного кода? – Kiquenet