使用特定于运行时的实现有什么优点



当从alpine容器内运行dotnet restore --runtime linux-musl-x64时,我注意到一些runtime.unix.System*包正在下载,当未指定--runtime标志时,这些包不会下载。我假设这是因为当runtime不存在时,dotnet restore默认为any还原包提供的与平台无关的实现。这是一个正确的假设吗?

我想知道是否有任何地方记录了使用.Net CORE包的运行时特定实现的优势?例如CCD_ 6和CCD_。我认为,因为它们不是通用的实现,所以从内存和CPU利用率的角度来看,它们更高效,但有任何官方建议或基准测试吗?

这不是优点/缺点的问题。当您指定一个运行时平台时,您将专门针对该平台,而在其他情况下,您将针对任何可能的平台。在前一种情况下,只引入了必要的运行时组件,而在后一种情况中,只是对目标上可能安装的任何运行时的松散引用。无论哪种方式,都将采用这些软件包。有适用于Windows、Linux、Mac等的运行时软件包。使用哪些软件包显然取决于应用程序最终部署的位置,当然也取决于运行时标志的规范。

System.Net.Sockets这样的包包含应用程序所依赖的托管位。因此,无论使用何种部署方法(依赖于框架还是自包含(,它们都是必需的,因此可以由构建过程恢复。

runtime.unix.System.Net.Sockets这样的包通常只包含本机位(要包装在操作系统API上的垫片(。只有自包含部署才需要它们。

因此,简单地说System.Net.Sockets取决于runtime.unix.System.Net.Sockets(如果在UNIX上运行(。它们并不像你想象的那样相互等同。

您不需要调用dotnet restore --runtime linux-musl-x64,因为这些运行时包在编译过程中是无用的。当您以特定运行时为目标时,可以将此类运行时包的恢复推迟到dotnet publish

最新更新