BinaryFormattere对存在的文件抛出FileNotFoundException,为什么?

时间:2011-04-27 01:05:36

标签: c# serialization binaryformatter

我使用以下代码序列化了一些带有一些属性的文件:

    public void saveLevelInfo(LevelData levelInfo) {
        stream = File.Open("Game.data", FileMode.Create);
        BinaryFormatter bFmt = new BinaryFormatter();
        bFmt.Serialize(stream, levelInfo);
        stream.Close();
    }

然后当我尝试使用它时:


    public void loadLevelInfo() {
        stream = File.Open("Game.data", FileMode.Open);
        BinaryFormatter bFmt = new BinaryFormatter();
        LevelData level = (LevelData)bFmt.Deserialize(stream);
        stream.Close();
    }

我得到这个例外: ileNotFoundException:无法加载文件或程序集“922ab9ba88eba49469a1eeab68bc0baa”或其依赖项之一。系统找不到指定的文件。

文件存在,如果我擦除文件我得到这个例外: FileNotFoundException:找不到文件“C:\ Users \ Gilson \ Documents \ AntHill \ anthill \ Game.data”

关于如何解决的任何想法?我是C#的新手,所以我不知道该怎么做。

1 个答案:

答案 0 :(得分:3)

  

无法加载文件或程序集'922ab9ba88eba49469a1eeab68bc0baa'

它抱怨程序集,而不是Game.data文件。温和地说,汇编名称相当奇怪。但是为了使BinaryFormatter能够反序列化存储在Game.data中的对象,它必须能够加载包含LevelData类型的程序集。使用Fuslogvw.exe tool解决装配分辨率问题,它会准确显示CLR正在寻找的装配以及它的外观。