Я пытаюсь заставить обфускатор {smartassembly} .NET работать с моей системой. В настоящее время я храню пользовательские данные в серии сериализованных классов словаря, а затем десериализую эти классы, чтобы вернуть данные. Я уже игнорирую информацию о версии сборки, просто потому, что это усложняет жизнь. Этот код адаптирован из MSDN:
//to avoid cross-versioning problems
public sealed class CrossVersionDeserializationBinder : SerializationBinder {
public override Type BindToType(string assemblyName, string typeName) {
Type typeToDeserialize = null;
typeToDeserialize = Type.GetType(String.Format("{0}, {1}",
typeName, assemblyName));
return typeToDeserialize;
}
}
Проблема в том, что теперь мое запутанное приложение будет игнорировать информацию о версиях, но не сможет прочитать данные, сохраненные не запутанным приложением, и наоборот. Нам понадобится не запутанная версия для отладки приложения, поэтому для нас это довольно большая проблема. Любой способ обойти эту проблему? Должен ли я просто не запутывать классы данных? Это похоже на довольно большую дыру в безопасности.