为什么Microsoft.AspNetCore.App在运行时下列出?

时间:2019-02-01 11:11:12

标签: .net .net-core

执行dotnet --info时,我得到以下输出(显示摘录):

  

已安装.NET Core运行时:
    Microsoft.AspNetCore.All 2.1.6 [C:\ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.All]
    Microsoft.AspNetCore.All 2.1.7 [C:\ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.All]
    Microsoft.AspNetCore.App 2.1.6 [C:\ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.App]
    Microsoft.AspNetCore.App 2.1.7 [C:\ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.App]
    Microsoft.NETCore.App 2.1.6 [C:\ Program Files \ dotnet \ shared \ Microsoft.NETCore.App]
    Microsoft.NETCore.App 2.1.7 [C:\ Program Files \ dotnet \ shared \ Microsoft.NETCore.App]

为什么上述命令将Microsoft.AspNetCore.AllMicrosoft.AspNetCore.App输出为运行时?

2 个答案:

答案 0 :(得分:1)

针对.NET Core框架的

AspNetCore应用程序需要很多捆绑包才能工作。如果要在NETCore.App运行时上运行ASP.NET Core应用程序,则会是这种情况。

为避免这种情况,创建了两个单独的运行时,这些基本运行时将基本ASP.NET Core程序包与运行时捆绑在一起(AspNetCore.App),并且将所有内容都捆绑在一起(AspNetCore.All)。对于不引用单个nuget而是引用Microsoft.AspNetCore.App/All元包的AspNetCore应用程序,这些是必需的。

我找不到确切的消息来源,但我仔细阅读这两行内容,我认为这是基于https://dotnetcoretutorials.com/2017/08/27/microsoft-aspnetcore-package/的工作方式。

答案 1 :(得分:1)

这里的答案分为两部分:

  1. 为什么ASP.NET核心中运行时列出?

这是因为dotnet --info命令在.NET Core安装内部查找所有运行时。 ASP.NET核心分布与.NET核心沿着运行时(或共用框架)。如果您在安装中查看,则有C:\Program Files\dotnet\shared\Microsoft.AspNetCore.AllC:\Program Files\dotnet\shared\Microsoft.AspNetCore.App目录表明Microsoft.AspNetCore.AppMicrosoft.AspNetCore.All是.NET Core包含的共享框架。

  1. 为什么ASP.NET核心运行时?

说ASP.NET Core中存在一个安全问题。微软发布的更新。如果ASP.NET Core只是普通软件包,则需要使用ASP.NET Core的更新版本重建所有项目,以获取安全修补程序。

但是ASP.NET核心是随机配备与.NET核心的运行时。这意味着更新.NET Core的安装时,您的应用程序将自动切换到ASP.NET Core的较新版本。因此,您无需重建应用程序即可获得安全修复程序。您只需要更新.NET Core / ASP.NET Core安装即可。这使应用程序更容易获得安全修复程序。