Microsoft.Xna.Framework.Storage.dll 是 Microsoft XNA Framework 运行时体系中承担存储职责的独立托管程序集,其实现对应 Microsoft.Xna.Framework.Storage 命名空间。它不随 .NET Framework 基础类库分发,而是由 XNA Framework Redistributable 与 XNA Game Studio 提供,版本号通常为 4.0.0.0,采用强名称签名(PublicKeyToken=842cf8be1de50553),并须与 Microsoft.Xna.Framework.dll、Microsoft.Xna.Framework.Game.dll 保持版本一致。
StorageDevice 是该程序集的门面类型,用于封装“存储介质”这一平台相关概念。XNA 通过 BeginShowSelector / EndShowSelector 一对异步方法弹出平台原生的设备选择界面:Xbox 360 对应硬盘与记忆卡,Windows 映射到当前用户的配置文件目录,Windows Phone 则指向应用隔离存储。选择结果由 StorageDevice 实例持有,并可通过 StorageDevice.NotForcedRoaming 等静态属性影响容器的实际落盘位置。
StorageContainer 是真正的读写载体,由 StorageContainerManager 创建,其容器目录位于用户配置目录之下,实际路径对调用方不透明。调用 StorageDevice.OpenContainer 取得实例后,使用 CreateFile / OpenFile 并配合 FileMode(Create、Open、OpenOrCreate、Truncate)与 FileAccess 参数完成读写,从而在容器内形成受控的文件命名空间,避免游戏进程直接触碰任意磁盘路径,也规避了跨用户越权访问。
OpenContainer 接受 PlayerIndex 参数,使存档与登录玩家档案一一对应,实现多用户进度互不干扰;不传玩家索引时打开共享容器,适用于全局设置、排行榜缓存等公共数据。
容器类型实现 IDisposable,必须显式 Dispose 以释放文件句柄;StorageDevice.DeleteContainer 用于删除指定容器,异步回调与容器释放共同构成完整的资源回收链路,避免句柄泄漏导致的存档写入失败。
该程序集自身不提供序列化能力,但常与 XmlSerializer、BinaryReader/BinaryWriter 等配合,把游戏状态对象写入容器内的文件流,形成“设备选择 → 容器打开 → 文件读写 → 容器释放”的标准存档流程。