Asp.net core ASP.NET Core 3.0 Web API,占用空间最小

Asp.net core ASP.NET Core 3.0 Web API,占用空间最小,asp.net-core,.net-core,asp.net-core-3.0,.net-core-3.0,.net-core-publishsinglefile,Asp.net Core,.net Core,Asp.net Core 3.0,.net Core 3.0,.net Core Publishsinglefile,我想创建一个ASP.NET Core 3.0 Web API,在发布大小和RAM消耗方面占用最少的空间。CPU消耗似乎不是什么大问题,在我的用例中调用的数量非常少 为了测试,我尝试了ASP.NET核心空模板。然后,我在我的csproj文件中应用了以下标志: true 真的 win-x64 这使我得到一个约46 MB的可执行文件,当我从cmd运行它时,我发现一个新进程消耗约19 MB 我的问题:在ASP.NET2.X中,有一个元包AspNetCore.App,它包含了人们通常需要的所有东西。但对

我想创建一个ASP.NET Core 3.0 Web API,在发布大小和RAM消耗方面占用最少的空间。CPU消耗似乎不是什么大问题,在我的用例中调用的数量非常少

为了测试,我尝试了ASP.NET核心空模板。然后,我在我的
csproj
文件中应用了以下标志:

true
真的
win-x64
这使我得到一个约46 MB的可执行文件,当我从
cmd
运行它时,我发现一个新进程消耗约19 MB

我的问题:在ASP.NET2.X中,有一个元包
AspNetCore.App
,它包含了人们通常需要的所有东西。但对于我的嵌入式系统来说,这通常有点粗糙。现在,在3.0中,我既没有看到
.csproj
中列出的元包,也没有看到任何单独的包。是否还有一种方法可以精确控制哪些包被引用,哪些不被引用

给定
PublishTrimmed
选项:关心哪些包被引用有意义吗?或者是任何没有被使用的东西都被剥掉了

更新


更清楚地说,嵌入式系统将运行一个基于Yocto的Linux发行版,一些基于C的代码用于与底层测量硬件通信,而ASP.NET Web API用于与外部世界通信,没有其他功能!一旦ASP.NET Core 3.1的LTS版本发布,我们的系统可能会交付给客户并运行5-10年而不进行任何更新,至少假设不需要关键的安全修复。通常只能在LAN上访问设备。

这将创建一个独立的包。如果发布一个依赖于框架的可执行文件(
——self-contained false
),您可能会得到其中的十分之一,甚至更少。顾名思义,服务器上必须安装相应的运行时。RAM消耗取决于代码的功能,而不是可执行文件的大小,但我看不出这有什么帮助。非自包含应用程序需要全局安装运行时。由于我的Api是我设备上唯一的.NET核心应用程序,我想我最终会得到比现在更多的应用程序,因为我放松了修剪。你必须决定你想要什么(并在问题中澄清)。小可执行文件还是小容器/总占地面积?您打算如何以及多久升级一次运行时/应用程序本身?3.0是“当前”版本。LTS版本将是3.1版,将于11月发布。如果您需要部署两个.NET核心应用程序,使用自包含的可执行文件将花费92MB,而安装运行时将产生更小的deploymentsOk,并试图使其更清晰。