# DevBox **Repository Path**: wj447405759/dev-box ## Basic Information - **Project Name**: DevBox - **Description**: DevBox : JAVA,前端,C# MySQL,Redis 开发环境 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-22 - **Last Updated**: 2026-11-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DevBox · 开发环境管理器 一款面向 Windows 的**新电脑开发配置管理工具**(C# WinForms,.NET 8,低内存占用约 30~50MB)。 把 Java / C# / PHP / Node / MySQL / Redis / Nginx / PostgreSQL / Go / Python / Maven / Git 等开发组件 统一装进**一个数据根目录**,多版本共存、一键切换、服务可独立启停,并支持: - **新电脑一键配置**:旧电脑导出清单 → 新电脑导入 → 批量安装还原 - **当前电脑开发配置查看**:一键生成环境报告(组件/端口/运行状态/系统 PATH 工具/环境变量) > 借鉴 sdkMate 的思路,但规避其"必须管理员运行"的缺陷:DevBox 常规操作(用户级环境变量、 > 端口服务、安装)**普通权限即可**;只有 nvm 切换 Node(创建符号链接)等少数操作会通过 > **内置提权壳**按需弹一次 UAC,无需整个程序常驻管理员。 --- ## ✨ 核心特性 | 特性 | 说明 | | --- | --- | | 🟢 便携绿色 | 所有组件、缓存、仓库、数据、站点都在**一个数据根目录**下,不落系统默认位置(`~/.m2`、`%APPDATA%\npm-cache` 等),拷目录即迁移 | | 🔁 多版本共存 | MySQL/PostgreSQL/Redis/Nginx 可同装多版本**同时运行**,每版本独立数据目录、独立配置、独立端口 | | 🎯 一键切换 | Java/PHP/Go/Python/.NET 经 shim 转发 + HOME 变量切换;Node 走 nvm(`nvm install/use`) | | 🌀 Nginx 站点 | 每版本自动生成**优化版 nginx.conf**;站点 vhost 单文件夹管理,命名 `域名_端口.conf`;**主端口默认 8200**(不用 80),被占用自动顺移并提示 | | 📦 端口管理 | 基础端口可配置(MySQL 3306 / PostgreSQL 5432 / Redis 6379 / Nginx 8200 / php-cgi 9000),占用即顺移,分配结果持久化在 `services.json`,重启沿用 | | 🚀 新机配置 | 导出清单(组件版本 + 镜像 + 端口设置)→ 新电脑导入 → 顺序安装 + 激活 + 写环境变量,冲突自动"备份后覆盖",全程无弹窗 | | 📋 环境报告 | 一键查看当前电脑开发配置:DevBox 组件 ★ 激活/端口/运行状态、系统 PATH 已装工具(java/mvn/node/php/go/python/dotnet/git/psql/redis-cli/nginx/docker…)、关键环境变量 | | 🛡 服务独立 | MySQL/PostgreSQL/Redis/Nginx 以独立进程运行,**关闭 DevBox 界面后继续存活**;按 pid 文件精确启停,不误杀其他版本 | | ⚙️ 镜像可配 | Maven 镜像(默认阿里云)、npm 源(默认淘宝 npmmirror)、Node 下载镜像可在设置页修改 | | 🔑 管理员按需 | 普通权限运行;nvm 等需要管理员的操作经内置提权壳自动 UAC(顶栏显示当前权限状态) | --- ## 🚀 快速开始 1. **获取程序**:`dotnet publish -c Release`(见下方"构建"),或直接使用 `DevBox.exe`(Debug/Release 输出目录)。 2. **启动**:双击 `DevBox.exe`。首次自动使用 exe 同目录 `devbox-data` 作为数据根目录(可在"⚙ 设置"修改)。 3. **安装组件**:在【组件】页点击组件卡片 → 选择版本 → 点【安装】。安装完成后自动激活、生成 shim、写环境变量。 4. **使用命令行**:安装后**新开**终端即可用 `java`、`mvn`、`go`、`git`、`php` 等命令(由 `envs\bin` 的 shim 转发到当前激活版本)。切换版本后再开新终端生效。 ### Node(nvm) 1. 安装【NVM】组件 → 自动写完 `settings.txt`、`NVM_HOME/NVM_SYMLINK` 与用户 PATH。 2. 在 DevBox 里点【安装 Node 版本…】输入 `20` → 点【切换 Node 版本…】输入 `20.x.x`(symbolic link 操作会自动弹 UAC 提权)。 3. 也可以新开终端用 `nvm install 20` / `nvm use 20` / `nvm list`。 ### MySQL 多版本示例 1. 安装 MySQL 5.7 → 点【服务 (启动/停止)】→ 初始化数据目录并启动,端口 3306。 2. 再安装 MySQL 8.0 → 右键版本行【启动此版本】→ 端口 3306 被占用,**自动顺移到 3307** 并提示,两版同时运行、数据目录各自独立(`envs\mysql\<版本>\data`)。 --- ## 🎪 Nginx 站点(vhost) - **主端口默认 8200**(不用 80),被占用自动 +1 顺移并提示;实际主端口显示在【Nginx 站点】页。 - 每版本的站点文件集中在 `envs\nginx\<版本>\conf\vhosts\`,**一个站点一个文件,命名 `域名_端口.conf`**;停用改为 `域名_端口.conf.disabled`。 - 【Nginx 站点】页:新建/编辑/启用/停用/删除站点、浏览器打开、打开根目录、重载配置。 - 新建站点时端口自动建议(从基础端口起扫描空闲、避开主端口),也支持 PHP(转发到配置的 php-cgi 端口)。 - 根目录留空时自动建到数据根目录 `www\<域名>` 并生成 index.html。 - 无域名解析时,浏览器直接访问 `http://127.0.0.1:<站点端口>/` 即可(本机测试无需改 hosts)。 --- ## 📦 新机配置(清单迁移) **【新机配置】页**: 1. 旧电脑:点【导出配置清单】→ 得到 `devbox-manifest.json`(含已装组件版本、镜像、端口设置)。 2. 新电脑:安装 DevBox →【导入清单】(可选"应用清单中的镜像/端口设置")→【▶ 一键安装】。 3. 安装全程顺序执行:下载 → 解压 → 后置配置(maven settings.xml / php.ini / nvm settings)→ 激活 → shim → 写环境变量; 与系统已有软件冲突时**自动备份原值到 `<变量名>_backup` 再覆盖**,无弹窗;可随时【停止】。 4. 装完后【环境报告】页一键核对新电脑配置。 清单也可手工编辑(字段大小写不敏感),例如: ```json { "formatVersion": 1, "settings": { "NginxBasePort": 8200 }, "components": [ { "id": "jdk", "version": "21" }, { "id": "git", "version": "2.56.0.4" } ] } ``` --- ## 📋 环境报告 【环境报告】页 →【生成报告】:系统信息、DevBox 组件(★=激活版本,含端口与运行状态、启用站点数)、 系统 PATH 检测到的开发工具及版本、关键环境变量(JAVA_HOME/PHP_HOME/GOROOT/PYTHON_HOME/DOTNET_ROOT/NVM_HOME…)、 用户 PATH 是否包含 DevBox bin。可【导出为 .txt】。 --- ## 🔑 关于管理员权限 - DevBox 只写**用户级**环境变量(HKCU 注册表)与用户 PATH,普通权限即可运行,无需"以管理员身份启动"。 - nvm 的 `install`/`use` 需要创建符号链接:点击后自动经**提权壳**(本程序 `--sudo` 子进程)弹一次 UAC,执行完即退出,不影响主程序。 - 顶栏显示当前权限状态;如需整个程序常驻管理员,右键 exe → **以管理员身份运行**。 --- ## 🗂 目录结构(数据根目录) ``` devbox-data\ ├─ config.json # 配置:数据根目录、镜像、服务基础端口 ├─ active.json # 各组件当前激活版本 ├─ services.json # 各服务版本实际分配端口(持久化) ├─ envs\ # 所有组件安装目录 │ ├─ cache\ # 下载缓存(zip) │ ├─ bin\ # shim 转发脚本(java/mvn/go/git/php…) │ ├─ maven-repo\ # Maven 本地仓库(替换 ~\.m2) │ ├─ npm-cache\ # npm 包缓存(替换 %APPDATA%\npm-cache) │ ├─ nvm\ # nvm-windows(含 settings.txt) │ └─ mysql\5.7.44\data\ … # 每组件每版本独立(服务含独立 data) └─ www\ # 站点文件根目录(nginx vhost 默认根目录) ``` ## 🛠 构建与自测 需要 **.NET SDK 8.0+**(本仓库用 8.0/9.0 构建 `net8.0-windows`;打包产物为**自包含单文件**,使用端无需安装 .NET)。 > ⚠️ 换新电脑常见坑:如果系统 PATH 里的 `dotnet` 版本很旧(如 3.1),构建会报 > `目标框架“unsupported”无效`。解决:安装 .NET 8 SDK(推荐用户级安装,免管理员), > 并把其目录(如 `%LOCALAPPDATA%\Microsoft\dotnet`)放到 PATH **最前面**,或直接用完整路径调用: > > ```powershell > $env:LOCALAPPDATA\Microsoft\dotnet\dotnet.exe build DevBox.csproj -c Release > ``` ```bash # 构建(输出到 bin\Release\net8.0-windows\win-x64\) dotnet build DevBox.csproj -c Release # 自测(对构建出的 dll 运行) dotnet bin\Release\net8.0-windows\win-x64\DevBox.dll selftest-offline # 离线:端口顺移/nginx/vhost/清单/报告(不联网) dotnet bin\Release\net8.0-windows\win-x64\DevBox.dll selftest # 在线:需要网络,下载+安装Maven全链路 # 打包发布(单文件自包含 exe → publish\DevBox.exe,约 68MB,64 位 Windows 10/11 免装运行时) dotnet publish DevBox.csproj -c Release -o publish ``` 分发:把 `publish\DevBox.exe` 打成 zip(或在命令行 `Compress-Archive publish\DevBox.exe,使用说明.txt DevBox-0.1.0-win-x64.zip`), 通过 Gitee「发行版」/ 网盘发给使用者;发给最终用户的说明见 `使用说明.txt`。 ## 📄 参与贡献 / License 欢迎提交 Issue 与 PR。本项目为个人开发环境管理工具,遵循仓库内 LICENSE。