# 🔄 多版本兼容性与发布管理 为了确保 Mod 能够在不同版本的《缺氧》(如本体、DLC、测试版)中正常运行,你需要正确配置 `mod_info.yaml` 和 `archived_versions` 文件夹。 --- ## 一 . 核心配置文件:mod_info.yaml > [!IMPORTANT] > **官方原文链接:** [Setting up mod_info.yaml and archived_versions](https://forums.kleientertainment.com/forums/topic/158363-setting-up-mod_infoyaml-and-archived_versions/) 每个发布到 Steam Workshop 的 Mod 根目录必须包含 `mod_info.yaml`。它决定了 Mod 的“准入资格”。 ::: code-group ```yaml [mod_info.yaml 模板] supportedContent: ALL # 支持范围:VANILLA_ID, EXPANSION1_ID, 或 ALL minimumSupportedBuild: 512719 # 运行该 Mod 所需的最低游戏版本号 version: "1.0.0" # 你自己的 Mod 版本号 ``` ::: ## 二 . 文件夹结构:archived_versions 当你需要同时兼容当前稳定版和之前的旧版本时,不能只靠一个 .dll。你需要使用文件夹分层。 📂 推荐目录结构 ::: details 点击查看结构树 ```yaml MyMod/ ├── mod_info.yaml # 最新版的信息(通常指向当前正式版) ├── mod.yaml # 最新版的基本描述(通常指向当前正式版) ├── MyMod.dll # 适用于当前最新正式版的代码 └── archived_versions/ # 存档版本文件夹 └── 512719/ # 文件夹名 = 适用的最低游戏版本号 ├── mod_info.yaml # 该版本的独立信息 ├── mod.yaml # 该版本的基本描述 └── MyMod.dll # 该版本的专用代码 ``` ::: ⚙️ 运行逻辑说明 * **扫描阶段:** 游戏启动时会优先扫描 `archived_versions` 文件夹。 * **匹配阶段:** 它会寻找文件夹名(版本号)小于或等于当前游戏版本,且最接近当前版本的文件夹。 * **回退阶段:** 如果没有匹配的归档文件夹,则运行根目录下的默认文件。 ## 三 . 兼容性开发建议 ::: tip 🛡️ 为什么使用这种结构? * **版本隔离(防止“炸档”):** 当游戏大版本更新导致 API 变更时,旧版本用户会自动定向到 `archived_versions` 运行,确保插件不会因环境冲突而崩溃。 * **双轨并行(分支维护):** 支持同时为 **测试版 (Testing Branch)** 和 **正式版 (Live Branch)** 维护两套完全独立的 DLL 逻辑,互不干扰。 ::: ### 🛠️ 自动化生成事件 在 Visual Studio 的项目属性中添加 **生成事件 (Post-build event)**,可实现编译后自动归档到对应文件夹: ```batch # 如果是 Release 配置,自动拷贝到 512719 归档目录 if "$(ConfigurationName)" == "Release" ( xcopy /Y "$(TargetDir)$(TargetFileName)" "$(ProjectDir)archived_versions\512719\" ) ```