.NET CORE自包含应用程序部署.当.NET Core是跨平台时,为什么需要知道RID

San*_*.91 2 cross-platform runtime self-contained .net-core asp.net-core

在.NET Core 自包含应用程序中 ...我们需要在project.json中指定运行时(RID),我们希望我们的应用程序发布...为什么会这样?.NET Core是跨平台的,我们正在部署应用程序的平台或操作系统无关紧要.不是吗?

在此输入图像描述

Jon*_*eet 9

正是因为它是独立的......它包含整个.NET Core,或者至少与运行应用程序所需的一样多.虽然.NET Core是跨平台的,但这并不意味着您可以在Windows 10 IoT ARM机器上使用Linux x64 CLR二进制文件.同样,您的应用程序可能依赖于本机库,这些库将因平台而异......它不是"one-binary-fits-all".

相反,您要说明要构建哪些平台,并获得每个平台的应用程序副本,以及该平台的运行时和库.

这听起来像你想要的是一个便携式应用程序而不是一个独立的应用程序 - 此时你依赖于已经在目标机器上的.NET Core版本,这将取决于该机器的平台.

有关自包含应用程序与可移植应用程序之间差异的更多详细信息,请参阅.NET Core Application Deployment文章.