Microsoft.AspNetCore.All元数据包的优缺点

Har*_*mar 8 csproj nuget-package .net-core asp.net-core

ASP.NET Core 2.0没有必要对包括个体package references.csproj的文件.Microsoft.AspNetCore.Allmetapackage包含所有必需的包.我们可以将这个元数据包包含在.csproj文件中:

<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
Run Code Online (Sandbox Code Playgroud)

.Net Core应用程序中这个元数据包的主要优点和缺点是什么?(也考虑跨平台自包含的应用程序)

Tse*_*eng 18

当您创建针对.NET Core 2.0运行的ASP.NET Core 2.0应用程序时,您应该使用Microsoft.AspNetCore.All(对于ASP.NET Core 2.1及更高版本,Microsoft.AspNetCore.App建议使用),因为这是推荐的方法,并且有助于避免一长串依赖项.

发布时,将应用树抖动,这意味着:构建过程将找出将使用元数据包中的哪些包,并将它们从已发布的文件夹中剥离以保持较小的大小.

使用它的另一个原因是.NET Core Runtime Store.该Microsoft.AspNetCore.All包是运行时存储的一部分,因此不需要发布(如上所述),但更重要的是,它是预编译的,因此启动时间也会提高.

然而

  1. 在针对.NET Framework> = 4.6.1时,您不能使用Microsoft.AspNetCore.All(或Microsoft.AspNetCore.All),因为它分别需要Microsoft.AspNetCore.Appnetcoreapp2.0
  2. 您不能也不应该在便携式类库(PCL)中使用它,因为它需要netcoreapp2.1和PCL应该是目标netcoreapp2.0.有一些例外,例如,如果您依赖于仅在.NET Core上运行的(ASP.NET Core)程序包(或者您只需要.NET Core),因为PCL目标netstandard2.0无法在.NET Framework上运行

  • 值得一提的是,这适用于便携式(FDD)应用程序,而独立(SCD)应用程序不存在树抖动和运行时存储.如果我创建一个空项目(dotnet new web),请指定RuntimeIdentifier(例如win10-x64)并发布应用程序(dotnet publish -r win10-x64)我将在输出目录中看到所有未使用的DLL.因此,如果有人计划将他的应用程序部署为SCD,则不应使用Microsoft.AspNetCore.All元数据包. (2认同)