BinaryFormattere создает исключение FileNotFoundException для существующего файла, почему?

Я сериализовал файл с некоторыми атрибутами с помощью этого кода:

    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#, поэтому не знаю, что делать.


person gmemario    schedule 27.04.2011    source источник


Ответы (1)


Не удалось загрузить файл или сборку "922ab9ba88eba49469a1eeab68bc0baa"

Он жалуется на сборку, а не на файл Game.data. Название сборки, мягко говоря, довольно странное. Но чтобы BinaryFormatter мог десериализовать объект, хранящийся в Game.data, он должен иметь возможность загрузить сборку, содержащую тип LevelData. Используйте Fuslogvw.exe, чтобы устранять проблемы с разрешением сборки, он точно показывает, какую сборку ищет CLR и где она искала.

person Hans Passant    schedule 27.04.2011