执行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.All
和Microsoft.AspNetCore.App
输出为运行时?
答案 0 :(得分:1)
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)
这里的答案分为两部分:
这是因为dotnet --info
命令在.NET Core安装内部查找所有运行时。 ASP.NET核心分布与.NET核心沿着运行时(或共用框架)。如果您在安装中查看,则有C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All
和C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App
目录表明Microsoft.AspNetCore.App
和Microsoft.AspNetCore.All
是.NET Core包含的共享框架。
说ASP.NET Core中存在一个安全问题。微软发布的更新。如果ASP.NET Core只是普通软件包,则需要使用ASP.NET Core的更新版本重建所有项目,以获取安全修补程序。
但是ASP.NET核心是随机配备与.NET核心的运行时。这意味着更新.NET Core的安装时,您的应用程序将自动切换到ASP.NET Core的较新版本。因此,您无需重建应用程序即可获得安全修复程序。您只需要更新.NET Core / ASP.NET Core安装即可。这使应用程序更容易获得安全修复程序。