build: AOT 发布后自动 UPX nrv9 压缩(40MB→14MB)

- build.bat:publish 后清理产物 + upx -9 自动压缩,支持 SKIP_UPX 跳过、缺 upx 仅警告
- csproj:新增框架依赖单文件发布路径(非 AOT 时),.Static 包改为仅 AOT 引用
This commit is contained in:
chuan
2026-06-24 01:00:32 +08:00
parent da91dd442f
commit 42ebee50b7
2 changed files with 38 additions and 5 deletions
+20 -2
View File
@@ -16,7 +16,16 @@
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<!-- NativeAOT 发布配置(仅 publish 生效):单文件原生 exe -->
<!-- 框架依赖单文件发布(默认,仅 publish 生效):需目标机装 .NET 10 运行时
原生库(Skia/HarfBuzz/ANGLE)随单文件打包、运行时自解压 -->
<PropertyGroup Condition="'$(PublishAot)' != 'true'">
<PublishSingleFile>true</PublishSingleFile>
<SelfContained>false</SelfContained>
<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
<DebuggerSupport>false</DebuggerSupport>
</PropertyGroup>
<!-- NativeAOT 发布配置(需 -p:PublishAot=true,仅 publish 生效):单文件原生 exe -->
<PropertyGroup Condition="'$(PublishAot)' == 'true'">
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<StripSymbols>true</StripSymbols>
@@ -50,8 +59,9 @@
CoreUtils.SkiaSharp.Static 含 skia + libHarfBuzzSharp 的 .libCoreUtils.ANGLE.Static 含 ANGLE
两包各自的 .targets 会在 PublishAot 时自动追加 NativeLibrary,这里只补 DirectPInvoke 与系统 lib
版本对应:Avalonia 12 → SkiaSharp 3.119
仅 AOT 需要;框架依赖单文件用 Avalonia 自带的动态 Skia 原生库
-->
<ItemGroup>
<ItemGroup Condition="'$(PublishAot)' == 'true'">
<PackageReference Include="CoreUtils.SkiaSharp.Static" Version="3.119.0.1" />
<PackageReference Include="CoreUtils.ANGLE.Static" Version="7151.0.1" />
</ItemGroup>
@@ -79,4 +89,12 @@
<Delete Files="@(_AotJunk)" />
</Target>
<!-- 框架依赖单文件清理:原生库符号(libSkiaSharp.pdb 等)与托管 .pdb 发布不需要,只留 notify.exe -->
<Target Name="CleanSingleFileOutput" AfterTargets="Publish" Condition="'$(PublishAot)' != 'true' And '$(PublishSingleFile)' == 'true'">
<ItemGroup>
<_SingleFileJunk Include="$(PublishDir)*.pdb" />
</ItemGroup>
<Delete Files="@(_SingleFileJunk)" />
</Target>
</Project>