Mat*_*age 26 .net serialization binaryformatter assemblyversions
我有一个项目使用BinaryFormatter序列化字符串和bool的结构集合?数据类型.
序列化/反序列化工作正常,但是如果我要更改执行工作的程序集,则无法反序列化,因为二进制文件中的标头指示它需要Assembly x
而不是Assembly y
处理数据.
是否可以将序列化/反序列化设置为与程序集无关?
小智 12
您可以更改BinaryFormatter属性AssemblyFormat以使序列化独立于程序集版本.
// Example
var binFormat = new BinaryFormatter();
binFormat.AssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple;
Run Code Online (Sandbox Code Playgroud)
挂钩AppDomain.OnAssemblyResolve事件并修复程序集名称
private System.Reflection.Assembly OnAssemblyResolve( System.Object sender, System.ResolveEventArgs reArgs )
{
foreach( System.Reflection.Assembly assembly in System.AppDomain.CurrentDomain.GetAssemblies() )
{
System.Reflection.AssemblyName assemblyName = assembly.GetName();
if( assemblyName.FullName == reArgs.Name )
{
return( assembly );
}
}
}
Run Code Online (Sandbox Code Playgroud)
来源:http://osdir.com/ml/windows.devel.dotnet.clr/2003-12/msg00441.html
归档时间: |
|
查看次数: |
16576 次 |
最近记录: |