Dotnet Core - 在我编译的应用程序中如何链接包(dll)
Dotnet Core - how are packages (dll's) linked in my compiled application
我正在创建一个新的 dotnet 核心 ASP Web API(dotnet 核心 2.2),我注意到的一件事是它引用了一个名为 Microsoft.AspNetCore.App
的包。
当我查看这个包时,它实际上是对 Microsoft 默认的一组其他包的引用,以便您构建所有唱歌和所有跳舞的 Web 应用程序。
我在其中注意到的一件事是对包的引用(例如),例如身份验证或 entity framework。 None 其中我需要(我有一个非常非常简单的 API)。
我的问题
引用未使用的包是否会影响应用程序的整体编译输出?它是否节省了内存消耗(如果不再链接 dll,将不会实例化对象)。
我想在您的应用程序中引用未使用的包仍然有一个 "footprint"(总体编译大小输出),其中包含指向正在设置的包的链接和正在实例化的包中的对象(我可能完全错了 - 所以任何澄清都会很棒!)。
我在 UI 世界中使用了 tree shaking 的概念,比如 WebPack。我看过这个 post 看起来 dotnet 有类似的东西:
https://ianqvist.blogspot.com/2018/01/reducing-size-of-self-contained-net.html
提前感谢您的任何建议!
我假设您正在寻找的是最近成为 .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 关于缩小编译工件的文章。
我正在创建一个新的 dotnet 核心 ASP Web API(dotnet 核心 2.2),我注意到的一件事是它引用了一个名为 Microsoft.AspNetCore.App
的包。
当我查看这个包时,它实际上是对 Microsoft 默认的一组其他包的引用,以便您构建所有唱歌和所有跳舞的 Web 应用程序。
我在其中注意到的一件事是对包的引用(例如),例如身份验证或 entity framework。 None 其中我需要(我有一个非常非常简单的 API)。
我的问题
引用未使用的包是否会影响应用程序的整体编译输出?它是否节省了内存消耗(如果不再链接 dll,将不会实例化对象)。
我想在您的应用程序中引用未使用的包仍然有一个 "footprint"(总体编译大小输出),其中包含指向正在设置的包的链接和正在实例化的包中的对象(我可能完全错了 - 所以任何澄清都会很棒!)。
我在 UI 世界中使用了 tree shaking 的概念,比如 WebPack。我看过这个 post 看起来 dotnet 有类似的东西:
https://ianqvist.blogspot.com/2018/01/reducing-size-of-self-contained-net.html
提前感谢您的任何建议!
我假设您正在寻找的是最近成为 .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 关于缩小编译工件的文章。