1

所以我有一个包含一些内容的序列化二进制文件,我正在尝试反序列化它。

我有:

    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”或其依赖项之一。该系统找不到指定的文件。文件名:'打包工具,版本=1.0.0.0,文化=中性,PublicKeyToken=null'

那是文件本身的开始。我在控制台应用程序中尝试过,它运行良好,但是当我将它导入 Unity3D 时,事情变得一团糟。有人知道问题的根源可能在哪里吗?

此外,当我用 bin.Deserialize 注释该行时,异常消失了。

4

2 回答 2

0

似乎在运行时找不到您的一个或多个程序集。该错误可能是由于文件包含Packaging Tool丢失或未包含在输出目录中。

当您导入 Unity3D 时,您是否还导入了依赖项?即,Packaging Tool文件?

于 2013-09-18T09:40:41.923 回答
0

Deserialize 方法将字节流转换为对象,在序列化期间,Binary Formatter 尝试定位在名为 Packaging Tool 的程序集中声明的对象。由于找不到程序集,因此无法实例化对象,因此引发异常。

确保打包工具程序集存在于您的应用程序文件夹中或在 GAC 中注册。

于 2013-09-18T09:40:46.833 回答