.NET Core 应用程序是否需要在目标计算机上安装 .NET 运行时?

Do .NET Core apps require the .NET runtime installed on the target machine?

在此 video 中,Scott Hanselman 采访了 ASP.NET 团队的一名成员。他说 ASP.NET 5 在 .NET Core 之上的目标之一是应用程序将不依赖于托管服务器上的 .NET Framework 和 GAC 程序集。相反,.NET Core 库将通过 NuGet 包发布,应用程序将与其依赖项一起部署。

其中一个原因是 Microsoft 可以快速发布错误修复或新功能,而我们不必等到(完整框架的)新版本安装到我们的托管环境中。

我的问题是:

基于 .NET Core 构建的应用程序是否真的独立于目标计算机上安装的 .NET 版本,即使没有安装 .NET Framework,它们也能运行吗?

是的,您在应用程序中使用的框架完全独立于目标服务器上安装的 .NET Framework,因为核心 .NET Framework 是通过 NuGet 包引用的,并且可以捆绑部署通过 DNX Utility,您特别感兴趣的是 dnu publish 命令。

这里是一段摘录,描述了 dnu publish 的作用:


发布(dnu publish

发布命令会将您的应用程序打包到一个可以启动的独立目录中。它将创建以下目录结构:

  • 输出/
  • output/packages
  • output/appName
  • output/commandName.cmd

packages 目录包含您的应用程序需要的所有包 运行。

appName 目录将包含您所有的应用程序代码,如果您有项目引用,它们将显示为自己的目录,并包含此级别的代码。


因此.NET Core将存在于output/packages目录中,不需要安装在目标服务器上。

普通的 .net 核心应用程序要求您在要 运行 应用程序的计算机上安装 .net 核心。然而,有一种方法可以避免这种情况,即发布一个独立的应用程序。您可以发布包含必要版本的 .net 核心的应用程序。这会使你的应用程序更大,但是如果你只需要一台机器上的一个应用程序到运行.net,你需要一个特定版本的.net,或者你想做一个可移植的应用程序,这是一个不错的选择。