Asp.net .NET核心应用是否需要在目标计算机上安装.NET运行时?

Asp.net .NET核心应用是否需要在目标计算机上安装.NET运行时?,asp.net,.net,asp.net-core,.net-core,Asp.net,.net,Asp.net Core,.net Core,在这篇文章中,Scott Hanselman采访了ASP.NET团队的一位成员。他说,ASP.NET5在.NETCore之上的目标之一是,应用程序将不依赖于托管服务器上的.NETFramework和GAC程序集。相反,.NET核心库将通过NuGet软件包发布,应用程序将与其依赖项一起部署 其中一个原因是,微软可以快速发布一个bug修复或新功能,我们不必等到新版本(完整框架)安装到我们的托管环境中 我的问题是: 基于.NET Core构建的应用程序是否真正独立于目标计算机上安装的.NET版本,并且

在这篇文章中,Scott Hanselman采访了ASP.NET团队的一位成员。他说,ASP.NET5在.NETCore之上的目标之一是,应用程序将不依赖于托管服务器上的.NETFramework和GAC程序集。相反,.NET核心库将通过NuGet软件包发布,应用程序将与其依赖项一起部署

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

我的问题是:


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

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

以下是一段摘录,描述了dnu publish的功能:


发布(
dnu发布

publish命令将把应用程序打包到一个可以启动的自包含目录中。它将创建以下目录结构:

  • 输出/
  • 输出/包
  • 输出/应用程序名
  • 输出/commandName.cmd
packages目录包含应用程序需要运行的所有包

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



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

普通的.NET Core应用程序要求您在希望运行应用程序的机器上安装.NET Core。但是,有一种方法可以避免这种情况,那就是发布一个自包含的应用程序。您可以发布包含必需版本的.net core的应用程序。这将使你的应用程序更大,但是如果你在一台机器上只需要一个应用程序来运行.net,你需要一个特定版本的.net,或者你想制作一个可移植的应用程序,这是一个很好的选择。

与Unity游戏如何使用足够多的Mono DLL进行打包,从而独立于框架,从而在不在机器上安装任何.NET或Mono的情况下运行相比,这是值得比较的。NET Core允许应用程序以可比较的方式安装。那么,在目标计算机上需要安装什么?@Sean-托管应用程序的东西(即IIS)。如果您使用的是自托管?那么它是一个100%独立的应用程序吗?但是运行时呢?运行时(CoreCLR)是否也与应用程序打包在一起,或者它必须以某种方式存在于目标计算机中?对于以前的.net framework来说是这样的,不是吗?那么到底发生了什么变化?@Liero我认为你以前不可能用你的应用程序打包.net framework