我正在创建一个新的dotnet核心ASP Web API(dotnet核心2.2),我注意到的一件事是它引用了一个名为Microsoft.AspNetCore.App
的程序包。
当我查看此软件包时,它实际上是对Microsoft默认设置的其他软件包的引用,以便您构建所有唱歌和跳舞的Web应用程序。
我在其中注意到的一件事是对包的引用(例如),例如身份验证或实体框架。我不需要(我有一个非常简单的API)。
我的问题
引用未使用的软件包是否会影响应用程序的整体编译输出?是否节省了内存消耗(如果不再链接dll,则不会实例化对象)。
我想象在应用程序上引用未被使用的软件包仍然会留下“足迹”(总编译大小输出),其中包含指向安装程序的链接以及被实例化的程序包中的对象(我可以完全对此有误-因此任何澄清都将是一件好事!)。
我在Web世界中使用了像WebPack这样的摇树概念。我看过这篇看起来像dotnet的帖子:
https://ianqvist.blogspot.com/2018/01/reducing-size-of-self-contained-net.html
提前感谢您的任何建议!
答案 0 :(得分:1)
我假设您正在寻找的是Tree Trimming功能,该功能最近已成为.Net Core 3.0的一部分。
可以通过* .csproj文件中的PublishTrimmed
选项启用该功能。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
<PublishTrimmed>true</PublishTrimmed>
</PropertyGroup>
</Project>
这是斯科特·汉塞尔曼(Scott Hanselman)的blog post,内容是缩小已编译的工件。