Files
LanMountainDesktop/.github/QUICK_REFERENCE.md
lincube 00a3c6a572 0.3.8
噪音评分组件
2026-03-04 19:16:51 +08:00

3.4 KiB
Raw Blame History

📦 快速参考:包大小优化清单

问题

  • 打包产物非常大(~600MB
  • 没有包含 .NET 运行时

解决方案已实施

🔧 三处主要改动

1 工作流优化 (.github/workflows/release.yml)

已更新Windows + Linux + macOS 的三个 Publish 步骤

新增参数 (每个平台):

-p:PublishSingleFile=true      ← 单一可执行文件
-p:SelfContained=true          ← ✅ 包含.NET运行时  
-p:DebugSymbols=false          ← 移除调试符号
-p:PublishTrimmed=true         ← 启用代码修剪
-p:TrimMode=partial            ← 安全修剪
-p:PublishReadyToRun=true      ← 预编译

2 项目配置 (LanMountainDesktop/LanMountainDesktop.csproj)

已更新Added Release优化配置块

关键添加:

<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>
<SelfContained Condition="'$(RuntimeIdentifier)' != ''">true</SelfContained>

3 修剪保护 (LanMountainDesktop/TrimmerRoots.xml)

已创建XML配置文件

作用: 保护30+关键程序集不被过度修剪


📊 预期效果

原始包大小        优化后包大小      减少比例
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
~600MB      →     ~250MB        ⬇️ 58%
~550MB      →     ~220MB        ⬇️ 60%
~550MB      →     ~220MB        ⬇️ 60%

🧪 快速验证

构建测试

cd LanMountainDesktop
dotnet build -c Release

发布测试(本地)

dotnet publish -c Release -r win-x64 --self-contained `
  -p:PublishSingleFile=true `
  -p:PublishTrimmed=true `
  -p:TrimMode=partial `
  -p:PublishReadyToRun=true `
  -p:DebugSymbols=false

CI/CD 测试

git tag v1.0.1-test
git push origin v1.0.1-test
# 监察 GitHub Actions

关键指标

指标 目标 状态
包大小减少 50%
.NET运行时 包含
单一文件
性能提升 更快启动
功能完整 100%

🚀 下一步

  • 本地构建验证
  • 推送测试版本
  • 下载并测试包大小
  • 运行应用验证功能
  • 合并到主分支

📚 详细文档


💡 快速问答

Q: 为什么包还是很大? A: 检查工作流日志确保PublishTrimmed参数生效。查看是否有修剪警告。

Q: 如何确保.NET运行时在其中? A: 使用 --self-contained-p:SelfContained=true并检查发布输出是否大于200MB。

Q: 应用无法启动怎么办? A: 检查应用日志是否有MissingMethodException可能是过度修剪。在TrimmerRoots.xml中添加缺失程序集。

Q: 如何回滚? A: git revert 最后的提交或手动移除这些优化参数。


当前状态所有优化已实施等待CI/CD验证