我在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'。
知道可能导致此异常的原因吗?
答案 0 :(得分:0)
如果您的类包含没有Serializable标记的对象,则无法对其进行反序列化。您需要使用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")]