2017-10-05 134 views
0

ASP.NET Core 2.0中,不需要在.csproj文件中包含单个package referencesMicrosoft.AspNetCore.All metapackage包含所有必需的软件包。我们可以包括.csproj文件作为该综合包:Microsoft.AspNetCore的优点和缺点。所有元包

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

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

+4

是的,这是很好的做法。好的做法是由框架作者定义的,以及那些为了简单起见而创建了意图替换单个导入的元软件包的人。 – poke

+0

“Microsoft.AspNetCore.All”包有助于防止依赖版本的恶化。 – Ignas

+0

主要问题:您无法降级“元包”中的任何内容以符合其他包的要求。例如,Azure堆栈大部分停留在Json.NET 9.0.1上,但是这个倾倒地包对10.0.1声明了最小的依赖关系,这会破坏Azure堆栈。 – McGuireV10

回答

6

当您创建运行在.NET Core 2.0上的ASP.NET Core 2.0应用程序时,应该使用Microsoft.AspNetCore.All,因为这是推荐的方法,可用于避免长列表的依赖关系。

发布时,将会应用树状结构,这意味着:构建过程将查找元包中的哪些包将被使用,并将它们从发布的文件夹中去除以保持较小的尺寸。

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

然而

  1. 你不能针对.NET框架> = 4.6.1当使用Microsoft.AspNetCore.All,因为它需要netcoreapp2.0
  2. 你不能,不应该在可移植类库使用它( PCL),因为它需要netcoreapp2.0,而PCL应该以netstandard2.0为目标(例如,如果您依赖仅在.NET Core上运行的(ASP.NET Core)包,则有一些例外,因为定位为netcoreappx.y的PCL可以运行于.NET Framework上