所以我有一个包含一些内容的序列化二进制文件,我正在尝试反序列化它。
我有:
try
{
using (Stream stream = File.Open(file, FileMode.Open))
{
BinaryFormatter bin = new BinaryFormatter();
var contents = bin.Deserialize(stream);
}
}
catch (IOException io)
{
Debug.LogError(io.ToString());
}
但我得到IO异常
System.IO.FileNotFoundException:无法加载文件或程序集 '包装工具,版本= 1.0.0.0,文化=中立, PublicKeyToken = null'或其依赖项之一。系统不能 找到指定的文件。文件名:'Packaging Tool,Version = 1.0.0.0, Culture = neutral,PublicKeyToken = null'
这是文件本身的开始。我在一个控制台应用程序中尝试了它,它运行得很好,但是当我将它导入Unity3D时,事情变得混乱。有人知道问题根源在哪里吗?
此外,当我用bin.Deserialize评论该行时,异常消失。
答案 0 :(得分:0)
在运行时似乎无法找到一个或多个程序集。该错误可能是由于包含Packaging Tool
的文件丢失或未包含在输出目录中。
当您导入Unity3D时,是否还导入了依赖项?即,Packaging Tool
文件?
答案 1 :(得分:0)
Deserialize方法将字节流转换为对象,在序列化期间,二进制格式化程序尝试查找在名为Packaging Tool的程序集中显然声明的对象。由于无法找到程序集,因此无法实例化对象,因此会抛出异常。
确保包装工具程序集存在于您的应用程序文件夹中或在GAC中注册。