【问题标题】:Do .NET Core apps require the .NET runtime installed on the target machine?.NET Core 应用程序是否需要在目标计算机上安装 .NET 运行时?
【发布时间】:2015-08-16 16:59:56
【问题描述】:

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

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

我的问题是:

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

【问题讨论】:

    标签: asp.net .net asp.net-core .net-core


    【解决方案1】:

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

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


    发布 (dnu publish)

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

    • 输出/
    • 输出/包
    • 输出/应用名称
    • 输出/commandName.cmd

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

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


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

    【讨论】:

    • 值得比较一下 Unity 游戏如何使用足够多的 Mono DLL 打包以独立于框架,因此无需在机器上安装任何 .NET 或 Mono 即可运行。 .NET Core 允许以类似方式安装应用程序。
    • 那么在目标机器上需要安装什么?
    • @Sean - 托管应用程序的东西(即 IIS)。
    • 如果您使用的是自托管?那么它是一个 100% 独立的应用程序吗?
    • 但是运行时呢?运行时 (CoreCLR) 是否也与应用程序一起打包,或者它必须以某种方式存在于目标机器中?
    【解决方案2】:

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

    【讨论】:

    • 以前的 .net 框架也是如此,不是吗?那么实际上发生了什么变化?
    • @Liero 我认为您之前无法将 .net 框架与您的应用程序打包在一起
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    相关资源
    最近更新 更多