Microsoft.AspNetCore.All元包的优缺点

Pros and cons of Microsoft.AspNetCore.All metapackage

ASP.NET Core 2.0 中,不需要在 .csproj 文件中包含个人 package referencesMicrosoft.AspNetCore.All 元包包含所有必需的包。我们可以将此元数据包包含在 .csproj 文件中,如下所示:

<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />

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

当您针对 .NET Core 2.0 创建 ASP.NET Core 2.0 应用程序 运行ning 时,您应该使用 Microsoft.AspNetCore.All(对于 ASP.NET Core 2.1 及更高版本,[=推荐 11=] - 从 ASP.NET Core 3.0 Microsoft.AspNetCore.All 将被删除)因为这是推荐的方法并且有助于避免一长串的依赖项。

发布(自包含)应用程序时,将应用摇树优化,这意味着:构建过程将找出元数据包中的哪些数据包将被使用,并将它们从发布的文件夹中剥离以保持大小小的。

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

但是

  1. 当面向 .NET Framework >= 4.6.1 时,您不能使用 Microsoft.AspNetCore.All(或 Microsoft.AspNetCore.App),因为它分别需要 netcoreapp2.0netcoreapp2.1
  2. 您不能也不应该在便携式 Class 库 (PCL) 中使用它,因为它需要 netcoreapp2.0 而 PCL 应该以 netstandard2.0 为目标。有一些例外,例如,如果你依赖一个(ASP.NET Core)包,它在 .NET Core 上只有 运行s(或者你只需​​要 .NET Core 的 API),因为 PCL 的目标 netcoreappx.y 不能 运行 在 .NET Framework