Skip to content

Building

DNT_OF edited this page Oct 18, 2026 · 10 revisions

构建与发布

对齐 main 上的维护者流程;预发布的差异见文末。

环境

  • .NET SDK(能构建 net48)
  • 已安装 SCP:SL Dedicated Server(提供 Assembly-CSharp 等)
  • 本机 LabAPI 运行时目录(含 LabApi.dll)

编译

dotnet build -c Release
# 产物:bin/Release/net48/SLDataAPI.dll

MSBuild 路径覆盖

游戏 Managed 与 LabAPI 默认按本机路径引用;其他机器:

dotnet build -c Release \
  -p:SCPSL_DIR="/path/to/SCPSL_Data/Managed" \
  -p:LABAPI_DIR="/path/to/AppData/.../LabAPI"

仓库不分发游戏 DLL;缺失引用会编译失败。

强名称签名

仓库根目录存在 key.snk 时 Release 自动强名称签名,公钥令牌 3ec73bb20070fa9c。
key.snk 不入库。

现状:目前 GitHub 上的官方 Release DLL 未强签名,因此自动更新只提示、不安装(见 Security-Model「自动更新」)。

部署

  1. SLDataAPI.dll → %AppData%/SCP Secret Laboratory/LabAPI/plugins/global/
  2. 依赖 → LabAPI/dependencies/global/:0Harmony.dll(2.3.x)与 Newtonsoft.Json.dll(13.0.x),游戏本身不自带
  3. 重启游戏服务器;配置见 Configuration

自动更新(运行时)

auto_update_install 从 GitHub Releases 拉取同名程序集,校验程序集名与签名。
只安装正式稳定包:跳过 prerelease/draft,以及 tag 名含 beta / alpha / rc / preview / dev 等标识的版本。预发布一律在 GitHub 上勾选 Pre-release,tag 名也带 preview(v<版本>-preview_<代号>),双重保险。

发布检查清单(维护者)

  1. 更新 Plugin.Version、SLDataAPI.csproj(Version / AssemblyVersion / FileVersion / InformationalVersion)与用户可见版本字符串(版本号 + 代号)
  2. dotnet build -c Release 干净通过
  3. 运行相关单测(如 tests/SLDataAPI.Auth.Tests、Update、WebDav)
  4. 打 Git tag(正式版 v<版本>_<代号>;预发布 v<版本>-preview_<代号>),上传 Release 资产(SLDataAPI.dll、DevKit zip、AdaptedPluginSample.dll);预发布勾选 Pre-release
  5. 同步本 Wiki:现行接口改 HTTP-API;历史对照改 Old-HTTP-API
  6. 功能开发可走长期分支,合入 main 并发正式包后再改稳定文档

预发布

  • 源码在 preview/* 分支,未合入 main;发布正式版时合入 main。
  • 需要针对 Steam 测试分支编译时,用 -p:SCPSL_DIR=... 指向该分支的 Managed 目录。
  • 节日相关的游戏类型一律按名称反射查找,游戏版本缺少时运行时 fail-closed,见 Holiday-Features。

目录结构

见 Architecture。

SLDataAPI Wiki

Releases · Issues

Clone this wiki locally