统一记录 NetworkTool 当前可直接使用的编译命令、默认输出位置,以及一键编译方式。
每次修改 windows 端代码时,必须同步更新 windows/NetworkTool.Client/NetworkTool.Client.csproj 中的 InformationalVersion。
版本号格式固定为当前时间:yyyy.MM.dd.HHmm,例如 2026.05.13.1446。
该版本号会显示在 Windows 客户端主界面标题栏,用于排查客户端程序是否为最新版本。
注意:只要改动了 windows 目录下会影响 Windows 客户端行为或界面的代码,就要更新该版本号。
在仓库根目录执行:
dotnet build ".\windows\NetworkTool.Client.sln" -c Debug
默认输出目录:
windows\NetworkTool.Client\bin\Debug\net9.0-windows\
说明:
Debug 输出目录NetworkTool.Client.exe 正在运行,重新编译可能因文件被占用而失败当前只需要编译 Linux amd64 版 Server,用于上传到 Ubuntu 24 设备。
本节默认前提:当前 PowerShell 已位于 D:\git\NetworkTool\server。
每次修改 server 端代码时,必须同步更新 server/internal/config/config.go 中的 ServerVersion。
版本号格式固定为当前时间:yyyy.MM.dd.HHmm,例如 2026.05.13.1446。
该版本号用于排查客户端与远端 Server 是否一致:
/api/device/info 会返回 server_version注意:只要改动了 server 目录下会影响 Server 行为的代码,就要更新该版本号。
在 server\ 目录执行:
$env:GOOS="linux"
$env:GOARCH="amd64"
$env:CGO_ENABLED="0"
go build -o ".\networktool-server-linux-amd64" ".\cmd\networktool-server"
输出文件:
server\networktool-server-linux-amd64
说明:
GOOS、GOARCH 恢复到原值go.mod 位于 server\ 目录下,因此应先进入 server 目录再执行 go buildCGO_ENABLED=0仓库根目录已提供 build.ps1。
执行命令:
powershell -ExecutionPolicy Bypass -File .\build.ps1
该脚本会依次完成:
publish\win-x64\NetworkTool.Client-<InformationalVersion>-win-x64.exepublish\linux-amd64\networktool-server-<ServerVersion>-linux-amd64以下示例基于当前联调环境:
x@192.168.229.136/home/x/networktool-serverD:\git\NetworkTool\server如果当前已经在仓库根目录执行:
scp .\publish\linux-amd64\networktool-server-<ServerVersion>-linux-amd64 x@192.168.229.136:/home/x/networktool-server
说明:
networktool-serverssh x@192.168.229.136
说明:
sudo 需要交互输入密码ssh "sudo ..." 方式直接停进程或启动服务sudo 命令登录远端后执行:
sudo pkill -f networktool-server
登录远端后执行:
chmod +x /home/x/networktool-server
说明:
scp 后远端权限一定正确登录远端后执行:
sudo nohup /home/x/networktool-server --ip 169.254.100.2 --port 48888 --password 'Dieteng2026' >/home/x/networktool-server-run.log 2>&1 < /dev/null &
说明:
root 身份运行,才能写入 netplan、执行 netplan apply、重启和关机sudo 启动,配置应用和系统动作会被 Server 直接拒绝登录远端后执行:
ss -ltnp | grep 48888
期望看到类似:
LISTEN ... 169.254.100.2:48888 ... networktool-server
登录远端后执行:
tail -n 50 /home/x/networktool-server-run.log
本机 PowerShell:
scp .\publish\linux-amd64\networktool-server-<ServerVersion>-linux-amd64 x@192.168.229.136:/home/x/networktool-server
ssh x@192.168.229.136
远端登录后:
sudo pkill -f networktool-server
chmod +x /home/x/networktool-server
sudo nohup /home/x/networktool-server --ip 169.254.100.2 --port 48888 --password 'Dieteng2026' >/home/x/networktool-server-run.log 2>&1 < /dev/null &
ss -ltnp | grep 48888
go build ./... 没报错,但找不到可执行文件这是正常现象。
go build ./... 更适合做整模块编译检查,不保证在你期望的位置生成最终可执行文件。
如果需要明确拿到 server 产物,应使用带 -o 的命令,例如:
$env:GOOS="linux"
$env:GOARCH="amd64"
$env:CGO_ENABLED="0"
go build -o ".\networktool-server-linux-amd64" ".\cmd\networktool-server"
NetworkTool.Client.exe 被占用通常表示客户端程序仍在运行。
处理方式:
NetworkTool.Client.exedotnet build