Попробуйте это:
public sealed class CurrentAssemblyDeserializationBinder : SerializationBinder
{
public override Type BindToType(string assemblyName, string typeName)
{
return Type.GetType(String.Format("{0}, {1}", typeName, Assembly.GetExecutingAssembly().FullName));
}
}
formatter.Binder = new CurrentAssemblyDeserializationBinder();
formatter.Deserialize(inStream);
Добавлен постер темы:
Да, это работает. Просто убедитесь, что в двоичных данных присутствуют какие-либо типы System.Generic или других библиотек, и вы должны передать их без изменений.
«ResizableControls» - имя старой сборки сборки, «EntityLib» - имя новой сборки
Кроме того, номер версии также должен быть заменен по требованию.
public sealed class CurrentAssemblyDeserializationBinder : SerializationBinder
{
public override Type BindToType(string assemblyName, string typeName)
{
string name;
if (assemblyName.Contains("ResizableControl"))
{
name = Assembly.GetAssembly(typeof(EntityLib.Pattern)).ToString();
}
else
{
name = assemblyName;
}
return Type.GetType(String.Format("{0}, {1}",
typeName.Replace("ResizableControl", "EntityLib"), name));
}
}
Спасибо, это именно то, что мне было нужно.