反序列化异常:找不到程序集
Posted
技术标签:
【中文标题】反序列化异常:找不到程序集【英文标题】:Deserialization exception : Unable to find assembly 【发布时间】:2014-06-04 11:03:52 【问题描述】:我从事 winforms 项目。
我尝试反序列化一个对象:
private void CreateObjects()
try
using (FileStream fs = new FileStream("path to file", FileMode.Open))
sObjects = (Objects)(new BinaryFormatter().Deserialize(fs));
catch (Exception ex)
MessageBox.Show(ex.ToString());
但在这一行:
sObjects = (Objects)(new BinaryFormatter().Deserialize(fs));
我得到了这个例外:
找不到程序集“TheNameOfTheClass, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”。
知道什么可能导致此异常吗?
【问题讨论】:
你有那个组件吗? 你能从这部分代码手动实例化'TheNameOfTheClass'吗? 【参考方案1】:如果你的类包含没有 Serializeable 标签的对象,你不能反序列化它们。您需要使用 NonSerializable 标记标记这些对象。
http://msdn.microsoft.com/en-us/library/system.nonserializedattribute.aspx
【讨论】:
【参考方案2】:如果在您的 AssemblyInfo.cs 版本中定义如下:
[assembly: AssemblyVersion("1.0.*.*")]
[assembly: AssemblyFileVersion("1.0.*.*")]
然后改成这样:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
【讨论】:
以上是关于反序列化异常:找不到程序集的主要内容,如果未能解决你的问题,请参考以下文章
DataContractSerializer:在流中找不到引用 id 'xyz' 的反序列化对象。如何恢复数据?
为 Jackson 自定义反序列化程序抛出带有 HTTP 状态代码的自定义异常