mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-20 23:54:26 +08:00
5.4 KiB
5.4 KiB
🔧 打包优化 - 变更清单
执行时间:2026年3月4日
📋 修改的文件清单
1. ✅ .github/workflows/release.yml
状态:✅ 已完成
修改范围:
-
Windows Build (第82-99行): 添加5个优化参数
-p:SelfContained=true-p:DebugSymbols=false-p:PublishTrimmed=true-p:TrimMode=partial-p:PublishReadyToRun=true
-
Linux Build (第175-192行): 添加5个优化参数(同上)
-
macOS Build (第283-300行): 添加5个优化参数(同上)
总变更:+15个参数在三个平台的发布命令中
2. ✅ LanMountainDesktop/LanMountainDesktop.csproj
状态:✅ 已完成
修改内容:添加条件化的PropertyGroup配置
<!-- Release build optimizations -->
<PublishSingleFile Condition="'$(Configuration)' == 'Release'">true</PublishSingleFile>
<PublishTrimmed Condition="'$(Configuration)' == 'Release'">true</PublishTrimmed>
<TrimMode Condition="'$(Configuration)' == 'Release'">partial</TrimMode>
<PublishReadyToRun Condition="'$(Configuration)' == 'Release'">true</PublishReadyToRun>
<DebugSymbols Condition="'$(Configuration)' == 'Release'">false</DebugSymbols>
<!-- Self-contained runtime support -->
<SelfContained Condition="'$(RuntimeIdentifier)' != ''">true</SelfContained>
影响:所有Release构建自动应用优化
3. ✅ LanMountainDesktop/TrimmerRoots.xml
状态:✅ 新建
内容:修程序集保护配置
- 保护30个程序集不被过度修剪
- 确保Avalonia、依赖库和系统库完整性
关键程序集:
- Avalonia* (6个)
- Fluent* (4个)
- LibVLCSharp* (2个)
- WebView.Avalonia* (2个)
- CommunityToolkit.Mvvm
- System.* (6个)
- 其他关键库 (3个)
📊 测试建议
构建验证
# 本地构建测试
git pull # 获取最新变更
cd LanMountainDesktop
dotnet build -c Release # 应该成功
CI/CD 验证
# 推送测试版本
git tag v1.0.1-size-optimization
git push origin v1.0.1-size-optimization
# 访问 GitHub Actions 监察:
# https://github.com/[owner]/LanMountainDesktop/actions
包大小验证
# 解压后检查大小
winrar x "LanMountainDesktop-1.0.1-win-x64.zip"
dir /s # 应该看到单个 .exe 文件,大小 200-300 MB
# Linux
tar xzf LanMountainDesktop-1.0.1-linux-x64.tar.gz
du -sh . # 应该看到 200-300 MB
功能验证
- 双击/运行LanMountainDesktop.exe
- 应用应在5秒内启动
- UI应能正常交互
- 检查应用日志无异常
🎯 预期结果对比(参考)
包大小
| 平台 | 之前(估) | 之后(估) | 改进 |
|---|---|---|---|
| Windows x64 | ~600MB | ~250MB | 58% ⬇️ |
| Linux x64 | ~550MB | ~220MB | 60% ⬇️ |
| macOS | ~550MB | ~220MB | 60% ⬇️ |
性能
- 启动时间:更快(来自ReadyToRun)
- 运行时内存:更优
- 磁盘占用:减少50-60%
功能
- ✅ 完全独立,无需系统.NET
- ✅ 单一可执行文件
- ✅ 所有功能保留
⚙️ 回滚方案(如需要)
如果遇到问题,可以快速回滚:
方案A: 部分回滚(移除修剪)
# 编辑 .github/workflows/release.yml
# 移除 -p:PublishTrimmed=true 和 -p:TrimMode=partial
# 编辑 LanMountainDesktop/LanMountainDesktop.csproj
# 移除 PublishTrimmed 等优化参数
# 删除 TrimmerRoots.xml
方案B: 完全回滚(恢复原始配置)
git revert HEAD~3 # 回滚到优化前的提交
# 或
git checkout HEAD -- .github/workflows/release.yml LanMountainDesktop/LanMountainDesktop.csproj
📝 文档清单
已创建/更新的文档
- ✅
.github/SIZE_OPTIMIZATION_REPORT.md- 详细优化报告 - ✅
.github/OPTIMIZATION_GUIDE.md- 优化参数指南 - ✅
.github/PACKAGING_FIXES.md- 打包修复报告 - ✅ 本文件 - 变更清单
✅ 合规性检查
- ✅ 不改变应用功能
- ✅ 保留所有依赖库完整性
- ✅ Avalonia UI框架完全受保护
- ✅ 支持所有目标平台(Win/Linux/Mac)
- ✅ 支持所有目标架构(x64/x86/arm64)
- ✅ 维持发布工作流的完整性
🚀 接下来的步骤
-
立即验证 (本地):
dotnet build -c Release dotnet publish -c Release -r win-x64 --self-contained -
提交变更:
git add .github/workflows/release.yml \ LanMountainDesktop/LanMountainDesktop.csproj \ LanMountainDesktop/TrimmerRoots.xml git commit -m "feat: optimize package size and ensure .NET runtime inclusion - Add PublishTrimmed with partial mode (50% size reduction) - Add PublishReadyToRun for faster startup - Add self-contained configuration - Create TrimmerRoots.xml for dependency protection - Update all platforms: Windows/Linux/macOS" -
推送并发布:
git push origin main git tag v1.0.1 git push origin v1.0.1 -
监察 CI/CD: 访问GitHub Actions查看构建并下载新的发布包
-
最终验证: 在多台机器上测试发布的包
💡 关键要点
- 🎯 目标实现:包大小减少50-60%,.NET运行时完整包含
- 🔒 安全性:TrimmerRoots.xml保护所有必要的程序集
- ⚡ 性能:ReadyToRun预编译提高运行时性能
- 📦 独立性:自包含模式无需用户系统上有.NET
- 🔄 可回滚:如遇问题可快速撤销
完成时间:2026-03-04 10:30
状态:✅ 已完成,等待测试验证