.net core app的几个依赖究竟是什么
前言
通过这篇文章,对这几个概念/引用有了一些了解:
- .netcore.app
- .aspnetcore.app
- .net framework
- netcoreappx.x
- .net standard
分两个层级考虑这个问题
- 应用所基于的framework版本
- 应用引用的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之上的一层应用框架。