From 42ebee50b74c7f22dd23a9429abf73b86d20a7b1 Mon Sep 17 00:00:00 2001 From: chuan Date: Wed, 24 Jun 2026 01:00:32 +0800 Subject: [PATCH] =?UTF-8?q?build:=20AOT=20=E5=8F=91=E5=B8=83=E5=90=8E?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=20UPX=20nrv9=20=E5=8E=8B=E7=BC=A9=EF=BC=8840?= =?UTF-8?q?MB=E2=86=9214MB=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - build.bat:publish 后清理产物 + upx -9 自动压缩,支持 SKIP_UPX 跳过、缺 upx 仅警告 - csproj:新增框架依赖单文件发布路径(非 AOT 时),.Static 包改为仅 AOT 引用 --- Notify/Notify.csproj | 22 ++++++++++++++++++++-- scripts/build.bat | 21 ++++++++++++++++++--- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/Notify/Notify.csproj b/Notify/Notify.csproj index 9570b4c..054b717 100644 --- a/Notify/Notify.csproj +++ b/Notify/Notify.csproj @@ -16,7 +16,16 @@ true - + + + true + false + true + false + + + win-x64 true @@ -50,8 +59,9 @@ CoreUtils.SkiaSharp.Static 含 skia + libHarfBuzzSharp 的 .lib,CoreUtils.ANGLE.Static 含 ANGLE 两包各自的 .targets 会在 PublishAot 时自动追加 NativeLibrary,这里只补 DirectPInvoke 与系统 lib 版本对应:Avalonia 12 → SkiaSharp 3.119 + 仅 AOT 需要;框架依赖单文件用 Avalonia 自带的动态 Skia 原生库 --> - + @@ -79,4 +89,12 @@ + + + + <_SingleFileJunk Include="$(PublishDir)*.pdb" /> + + + + diff --git a/scripts/build.bat b/scripts/build.bat index 6040b19..fa029ea 100644 --- a/scripts/build.bat +++ b/scripts/build.bat @@ -9,7 +9,7 @@ if exist "%VSWHERE%" ( for /f "usebackq tokens=*" %%i in (`"%VSWHERE%" -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath`) do set "VSPATH=%%i" ) if defined VSPATH if exist "%VSPATH%\VC\Auxiliary\Build\vcvars64.bat" ( - echo === 配置 MSVC 环境: %VSPATH% === + echo === Configure MSVC env: %VSPATH% === call "%VSPATH%\VC\Auxiliary\Build\vcvars64.bat" >nul ) @@ -17,10 +17,25 @@ echo === NativeAOT publish (win-x64) -^> bin\notify.exe === dotnet publish Notify -c Release -r win-x64 -p:PublishAot=true -o bin if errorlevel 1 ( echo. - echo *** 发布失败。若提示找不到 link.exe,请从 "Developer Command Prompt for VS" 运行本脚本 *** + echo *** publish failed. If link.exe not found, run from "Developer Command Prompt for VS" *** exit /b 1 ) +rem 清理发布目录残留:只留 notify.exe(AOT 下 -o 拷贝时序使 csproj 内清理不可靠,这里统一处理) +del /q bin\*.pdb bin\*.dll bin\*.lib >nul 2>&1 + +rem 自动 UPX 压缩(NRV -9:大小/解压速度最佳平衡,约 40MB->14MB,启动仅多 ~100ms) +rem 跳过压缩:先 set SKIP_UPX=1 再运行本脚本 +if "%SKIP_UPX%"=="1" goto after_upx +where upx >nul 2>&1 +if errorlevel 1 goto no_upx +echo === UPX compress (nrv9) === +upx -9 bin\notify.exe +goto after_upx +:no_upx +echo *** WARNING: upx not found on PATH, skip compression (output is uncompressed exe) *** +:after_upx + echo. -echo === 完成: %CD%\bin\notify.exe === +echo === Done: %CD%\bin\notify.exe === endlocal