反序列化异常:无法找到程序集

时间:2014-04-20 07:11:22

标签: c# .net deserialization serializable

我在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'。

知道可能导致此异常的原因吗?

2 个答案:

答案 0 :(得分:0)

如果您的类包含没有Seri​​alizable标记的对象,则无法对其进行反序列化。您需要使用Non Serializable标记标记这些对象。

http://msdn.microsoft.com/en-us/library/system.nonserializedattribute.aspx

答案 1 :(得分:0)

如果在AssemblyInfo.cs版本中定义如下:

[assembly: AssemblyVersion("1.0.*.*")]
[assembly: AssemblyFileVersion("1.0.*.*")]

然后将其更改为:

[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]