EndstoneDotnet.Toolchain 使用教程¶
EndstoneDotnet.Toolchain 是 Endstone .NET 插件的推荐配套工具。它自动完成插件开发中最繁琐的两件事:
- 合并依赖 —— 每次构建时,通过 ILRepack 把插件的所有依赖 DLL 合并进主程序集, 产出单个干净的程序集;
- 打包输出 —— 把合并后的程序集(以及你选择保留的独立 DLL)组装成
endstone-plugin文件夹,可直接丢进服务器的plugins目录。
构建一次,得到一个可直接部署的文件夹,无需手动拷贝依赖 DLL。
环境要求¶
- .NET 8 运行时(工具本身)+ .NET SDK(构建插件)
- 建议 Windows(交互式控制台 TUI);合并逻辑本身跨平台
1. 获取工具¶
克隆或下载仓库:
构建:
把 EndstoneDotnet.Toolchain.exe 放进插件项目的根目录(或任意子目录)——工具会自动
向上查找你的 .csproj。
2. 配置一次¶
运行工具(双击,或带 configure 参数执行):
它会:
- 找到包含
.csproj的目录; - 如果项目文件缺少
<Import Project="EndstoneDotnet.Toolchain.targets" />则自动写入; - 打开交互式 TUI 列出插件的依赖 DLL——勾选需要**保持独立**(不合并,例如必须单独加载的
原生绑定程序集)的那些,按
Q/Esc保存。
选择记录在项目旁的 endstone-toolchain.json 中:
TUI 按键:↑/↓ 移动,Enter/空格 切换,A 全选,N 清空,Q/Esc 保存并退出。
stdin 被重定向(CI)时,TUI 自动降级为"保留现有配置"模式。
3. 正常构建¶
工作流程没有任何变化——AfterBuild 钩子会自动执行 ILRepack。输出位于:
4. 部署¶
把整个 endstone-plugin 文件夹复制到服务器的 plugins 目录,重启服务器即可。
一个文件夹、一次拷贝,完成。
命令行参考¶
| 命令 | 说明 |
|---|---|
EndstoneDotnet.Toolchain.exe |
打开 TUI,选择保持独立的程序集,保存配置 |
configure / -c / --configure |
同上 |
merge --project <目录> --output <目录> [--assembly <文件>] |
执行 ILRepack 合并(构建钩子调用) |
help / -h / --help |
显示帮助 |
merge 选项:
| 选项 | 必填 | 说明 |
|---|---|---|
--project |
是 | 插件项目根目录(用于定位 endstone-toolchain.json) |
--output |
是 | 构建输出目录(TargetDir) |
--assembly |
否 | 主程序集文件名(默认:<项目目录名>.dll) |
MSBuild 属性(在 .targets 中设置):
| 属性 | 说明 |
|---|---|
EndstoneDotnetToolchainDisabled |
设为 true 跳过本次合并 |
EndstoneDotnetToolchainExe |
覆盖工具 exe 路径(默认:targets 文件同目录) |
常见问题¶
- 插件加载报缺少类型 —— 某个必须独立加载的程序集被合并了:重新运行
configure把它标记为"保持独立"。 - 合并根本没执行 —— 检查
EndstoneDotnetToolchainDisabled未设置,且.csproj中存在<Import Project="EndstoneDotnet.Toolchain.targets" />(重新克隆后需要重新配置)。 - 配置文件损坏 —— 工具会自动备份为
endstone-toolchain.json.corrupt.bak, 重新运行configure即可。