首页 > 解决方案 > Dotnet Core - 如何在我编译的应用程序中链接包(dll)

问题描述

我正在创建一个新的 dotnet core ASP Web API(dotnet core 2.2),我注意到的一件事是它引用了一个名为Microsoft.AspNetCore.App.

当我查看这个包的内部时,它实际上是对微软默认的一堆其他包的引用,以便您构建所有唱歌和所有跳舞的 Web 应用程序。

我在其中注意到的一件事是对包的引用(例如),例如身份验证或实体框架。我不需要这些(我有一个非常简单的 API)。

我的问题

引用未使用的包会影响应用程序的整体编译输出吗?它是否节省内存消耗(如果不再链接 dll,则不会实例化对象)。

我想对未使用的包的引用仍然在您的应用程序上有一个“足迹”(整体编译大小输出),其中包含指向正在设置的包的链接和正在实例化的包中的对象(我可能对此完全错误- 所以任何澄清都会很棒!)。

我在 UI 世界中使用了类似于 WebPack 的摇树概念。我看过这篇文章,看起来 dotnet 有类似的东西:

https://ianqvist.blogspot.com/2018/01/reducing-size-of-self-contained-net.html

提前感谢您的任何建议!

标签: c#.net-corecompiledmemory-consumptiontree-shaking

解决方案


我假设您正在寻找的是最近成为 .Net Core 3.0 的一部分的 Tree Trimming 功能。它可以通过PublishTrimmed*.csproj 文件中的选项启用。

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <PublishTrimmed>true</PublishTrimmed>
  </PropertyGroup>
</Project>

这是Scott Hanselman 关于缩小已编译工件的博客文章。


推荐阅读