You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译.NET Standard可移植库时如何减小DLL体积?(Xamarin场景)

减小UWP项目中.NET Standard库DLL体积的方案

编译阶段优化

  • 启用Release模式编译
    在Azure DevOps的dotnet build/dotnet pack命令中指定Release配置:

    dotnet build --configuration Release
    dotnet pack --configuration Release --no-build
    

    同时在.NET Standard库的项目文件中添加以下配置,进一步优化:

    <PropertyGroup Condition="'$(Configuration)'=='Release'">
      <Optimize>true</Optimize>
      <DebugType>pdbonly</DebugType> <!-- 或设为none完全移除调试符号 -->
      <DebugSymbols>false</DebugSymbols>
    </PropertyGroup>
    
  • 启用代码裁剪与.NET Native编译(UWP专属)
    对于UWP项目,启用.NET Native工具链,将IL编译为本地代码并裁剪未使用部分,在UWP项目文件中添加:

    <PropertyGroup Condition="'$(Configuration)'=='Release'">
      <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
    </PropertyGroup>
    

    同时在.NET Standard库的项目文件中启用未使用代码裁剪:

    <PropertyGroup>
      <TrimUnusedCode>true</TrimUnusedCode>
    </PropertyGroup>
    
  • 清理冗余依赖

    • 检查并移除库中未使用的NuGet包引用,使用dotnet list package命令排查依赖。
    • 将开发依赖(如测试框架、代码分析工具)标记为仅开发使用,避免打包进生产DLL:
      <PackageReference Include="xunit" Version="2.4.2">
        <PrivateAssets>all</PrivateAssets>
        <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      </PackageReference>
      
  • 优化嵌入式资源
    对库中嵌入的图片、配置文件等资源进行预压缩:

    • 使用PNG压缩工具处理图片资源。
    • 对文本类资源(如JSON、XML)进行压缩后再嵌入。

编译后优化

  • 合并依赖DLL
    使用ILRepack工具将多个依赖DLL合并到主库DLL中,减少文件数量与元数据冗余。在Azure DevOps pipeline中添加步骤执行:

    ILRepack /out:YourMergedLibrary.dll YourNetStandardLibrary.dll Dependency1.dll Dependency2.dll
    

    注意:合并前需验证依赖DLL是否允许合并,避免UWP运行时兼容性问题。

  • 裁剪冗余代码
    使用dotnet trim工具移除DLL中未被使用的代码与元数据(适用于.NET Core/.NET 5+兼容的.NET Standard库):

    dotnet trim YourNetStandardLibrary.dll --output TrimmedLibrary.dll
    

    裁剪后务必全面测试功能,防止误删必要代码。

  • 压缩DLL文件
    使用UPX工具对编译后的DLL进行无损压缩,显著减小体积:

    upx --best YourNetStandardLibrary.dll
    

    注意:压缩后需验证UWP项目能否正常加载该DLL,部分受签名限制的场景可能不适用。

额外注意事项

  • 针对UWP平台添加条件编译指令,移除非UWP专属代码:
    #if !WINDOWS_UWP
    // 非UWP平台代码,编译UWP时会被排除
    #endif
    
  • 所有优化步骤完成后,必须进行完整的功能测试与性能测试,确保不会引入运行时错误。

内容的提问来源于stack exchange,提问作者SRRIN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 00:30:57