代码之家  ›  专栏  ›  技术社区  ›  dstj

Heroku:如何减少.NET内核/角应用程序段塞大小?

  •  1
  • dstj  · 技术社区  · 7 年前

    我收到Heroku关于我鼻涕虫太大的警告:

    -----> Compressing...
       Done: 304.9M
    -----> Launching...
     !     Warning: Your slug size exceeds our soft limit (304 MB) which may affect boot time.
    

    我怎样才能减少我的鼻涕虫大小?它是.NET Core 2.1.401和Angular 6应用程序,因此我使用以下构建包:

    跑步 heroku run "du . -h --max-depth=3 --threshold=1M" 产生以下结果:

    2.5M    ./App/obj
    524M    ./App/ClientApp/node_modules
    16M     ./App/ClientApp/dist
    9.4M    ./App/ClientApp/src
    549M    ./App/ClientApp
    2.5M    ./App/bin/Release
    3.3M    ./App/bin
    556M    ./App
    16M     ./heroku_output/ClientApp/dist
    16M     ./heroku_output/ClientApp
    130M    ./heroku_output
    189M    ./.heroku/dotnet/sdk
    140M    ./.heroku/dotnet/shared
    329M    ./.heroku/dotnet
    27M     ./.heroku/node/lib
    3.0M    ./.heroku/node/include
    34M     ./.heroku/node/bin
    63M     ./.heroku/node
    391M    ./.heroku
    11M     ./.apt/usr/lib
    3.3M    ./.apt/usr/include
    15M     ./.apt/usr
    15M     ./.apt
    1.1G    .
    

    这批货在里面 node_modules/ (5.24亿), ./heroku/dotnet/ (329M)和 ./heroku_output (130米)。

    .slugignore 文件,因为 node_modules 文件夹是生成过程所必需的,因此我尝试删除 节点\u模块/ 之后的文件夹 dotnet publish .csproj 但它并没有缩小弹头的大小。

    <Target Name="CleanupNodeModules" AfterTargets="Publish">
      <Exec WorkingDirectory="$(SpaRoot)" Command="rm -rf node_modules" Condition=" '$(OS)' != 'Windows_NT' " ConsoleToMSBuild="true" />
    </Target>
    

    有什么想法吗?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Maxim Saplin    7 年前

    你可能想用 IL Linker 进一步减小.NET核心输出的大小。本质上,它将检查未使用的依赖项,并删除那些具有无法访问的代码的类库。我看到macOS和Windows中独立的.NET核心控制台应用程序的大小减少了30-50%。

        2
  •  0
  •   dstj    7 年前

    我创造了一个 pull request 将.NET核心项目构建为独立的 exe

    有了它,我就从304MB变成149MB了!

    看起来像 node_modules