.net core app的几个依赖究竟是什么

前言

通过这篇文章,对这几个概念/引用有了一些了解:

  • .netcore.app
  • .aspnetcore.app
  • .net framework
  • netcoreappx.x
  • .net standard

分两个层级考虑这个问题

  1. 应用所基于的framework版本
  2. 应用引用的nuget包

framework

比如,创建应用时VS指定基于.net core 2.2版本的framework,那么在项目的csproj文件中,就会有如下信息:

<PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>

如果指定的是原来的.net framwork,这里就会是.net framework的版本,如
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>

依赖的库文件/包

如果创建了.net core的应用,那么会自动添加Microsoft.NetCore.App的包,这是.net core应用程序的平台框架。

如果.net core需要使用诸如MVC等功能,则进一步需要依赖Microsoft.AspNetCore.App包。

来自Framework

当指定了framework时,编译时会自动根据framework版本,找到这组framework依赖的包。

.net standard

其中有一个库是Netstandard.Library,这就是会经常听到的.net standard这个概念。
.net standard是.net 一系列最基本的库包,它实际上又包含了一组库。
所包含的这些库与.net standard版本有关。

特别的,其中有一个NetStandard.Platform库,.net standard中的其他库都会依赖该库。

关于.net框架

.net 框架

  • .net : .net是一个平台,包含了CLR的定义,各种语言(c#,f#vb)的定义,各种framework等等
  • .net standard: 规定了一套API,不同的.net standard版本API依次丰富
  • .net framework: 从02年开始诞生的.net 平台的框架,从.net 4.5开始,.net framework开始对接.net standard 1.0版本。
    也就是说如果程序使用了.net framework 4.5,那么就能使用所有的.net standard API。
  • .net core: 新的跨平台.net 框架,从头.net core 1.0开始即支持到.net standard 1.6,最新的.net core 2.2支持到.net standard 2.2。

应用程序可以面向.net standard,也可以面向.net framework或者.net core框架。
面向.net standard应用,可以运行在安装了.net framework的机器上,也可以运行在.net core运行环境上。而使用了后两者的框架则需要相应的框架支持才可以运行,从而可以做到一次编译,多处运行这样的目的

但是后两种框架提供了超出.net standard的API,比如.net framework有专门面对windows 的API。

asp.net / asp.net core

asp.net是.net framework上又一层应用框架,包含了更多的功能,比如MVC等等。
同理asp.net core是.net core之上的一层应用框架。

posted @ 2020-03-31 21:16  mosakashaka  阅读(764)  评论(0编辑  收藏  举报