什么是C#Asp.net Core中的Metapackage?

众所周知,Microsoft.AspNetCore软件包是添加到许多ASP.NET Core模板中的软件包之一。

当打开一个新的ASP.NET Core项目时,Microsoft.AspNetCore程序包将作为常规项目依赖项之一被重复包含。它提供了许多重要的软件包来定位基本的ASP.NET Core应用程序。

尽管此程序包不包含任何实际的dll或代码本身,但仅包含对其他程序包的一系列依赖关系。通过将此软件包添加到项目中,您可以引入所有相关的软件包以及它所依赖的dll,这些软件包称为元软件包。

具体来说,它列出的软件包是-

Microsoft.AspNetCore.Diagnostics
Microsoft.AspNetCore.Hosting
Microsoft.AspNetCore.Routing
Microsoft.AspNetCore.Server.IISIntegration
Microsoft.AspNetCore.Server.Kestrel
Microsoft.Extensions.Configuration.EnvironmentVariables
Microsoft.Extensions.Configuration.FileExtensions
Microsoft.Extensions.Configuration.Json
Microsoft.Extensions.Logging
Microsoft.Extensions.Logging.Console
Microsoft.Extensions.Options.ConfigurationExtensions
NETStandard.Library

您将收到的这些程序包的版本取决于您安装的Microsoft.AspNetCore程序包的版本。

这些依赖项提供了用于设置使用ASP.NET Core服务器的主要基本库,该ASP.NET Core服务器使用Kestrel Web服务器并包括IIS集成。

就应用程序本身而言,仅借助此软件包,您就可以将应用程序设置和环境变量加载到配置中,使用IOptions界面,并配置到控制台的日志记录。

对于中间件,仅包含Microsoft.AspNetCore.Diagnostics程序包,这将允许添加中间件,例如ExceptionHandlerMiddleware,DeveloperExceptionPageMiddleware和StatusCodePagesMiddleware。

要完成一个应用程序,我们不能仅使用Metapackage,因为它没有提供足够的控件,但是我们可以使用Microsoft.AspNetCore.Mvc或Microsoft.AspNetCore.MvcCore软件包向我们的应用程序添加MVC功能,并且还需要一些其他软件包。

元软件包只是尝试使用可以应用于许多应用程序的许多软件包,因此我们不需要加载更多的依赖项,但实际上并不需要这样做,因为它也需要其他软件包。因此,如果包的数量很大,则依赖性会增加,这会影响元包的实际使用。例如,Microsoft.AspNetCore所依赖的依赖项之一就是NETStandard.Library包,它也是一个元包,因此依赖关系会增加。