У меня есть следующий способ генерации хэша объекта. Он работает очень хорошо! Но когда я меняю версию сборки, хэш меняется, даже когда объект тот же.BinaryFormatter ignore assembly version
public static string GetHash(Object item)
{
MemoryStream memoryStream = new MemoryStream();
BinaryFormatter binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(memoryStream, item);
binaryFormatter.AssemblyFormat = FormatterAssemblyStyle.Simple;
HashAlgorithm hashAlgorithm = new MD5CryptoServiceProvider();
memoryStream.Seek(0, SeekOrigin.Begin);
return Convert.ToBase64String(hashAlgorithm.ComputeHash(memoryStream));
}
Как можно игнорировать версию сборки?
Объект * не * одинаковый. Тип в .NET - это не просто имя пространства имен и имя типа, оно также включает в себя сборку, из которой он пришел. Который включает [AssemblyVersion]. Сильная контрмера DLL-Hell. И сильная проверка, которая предотвращает десериализацию данных, которые больше не соответствуют измененному классу. Ваш хэш-расчет просто добавляет * другой * проверяет, что данные изменились, возможно, излишне. Нет, вы не можете игнорировать версию сборки. –