什么是目标框架别名(What are the Target Framework Monikers (TFMs))?
我们现在的.NET Core 1.0应用(ASP.NET Core 1.0应用或控制台应用)有了新的被运行在不同框架上的可能性:①运行在.NET Core平台上 ②运行在传统的.NET Framework 4.5.x 上(对很多企业级应用来说仍然是一个至关重要的框架)。相对传统的.NET Framework 4.5.x(体积大、臃肿但全面) ,.NET Core平台栈和类库变得更加小和轻量化了。
什么是目标框架别名(Target Framework Monikers)
目标框架别名就是框架名称(Framework)+版本(Version)的标识符(ID),在你的.NET Core应用中可以指定的目标框架。
到目前为止,可以选择使用的框架别名有如下这些:
- “netcoreapp10”针对.NET Core 1.0
- “net45”、“net451”、“net452”、“net46”、“net461” 针对传统的.NET Framework版本
- “portable-net45+win8” 针对PCL(Portable Class Libraries)--可移植的类库
- “dotnet5.6”、“dnxcore50”针对.NET Core预览版(.NET Core RTM和.NET Core RC2以前的版本)
- “netstandard1.2”、 “netstandard1.5”等针对 .NET Standard Platform
.NET平台标准(.NET Platform Standard)
先用一张图直观的看看,.NET平台标准就是要把各自为政变为一统江湖。不管是开发传统的基于.NET Framework的应用还是开发基于.NET Core的应用,其依赖的底层类库都是一样的。这样就标准化了。
.NET Platform Standard别名"netstandard1.5"、"netstandard1.6"等的使用是有局限性的。当我们开发ASP.NET Core应用或Console应用时我们一般指定要在其上进行构建和运行的框架(Framework)。.NET Platform Standard别名仅仅是当我们开发包/类库时(也就是说我们是这些包/类库的作者或拥有者)才会使用到来指定哪些框架支持各自的类库。
通用的规则:
- app的开发者:指定我们正在写的目标TFM,比如:netcoreapp1.0, uap10.0 , net452 , xamarinios 等;
- 包/类库的 作者:指定最低版本的.NET Platform Standard,比如:netstandard1.0以便你的类库可以向后兼容。
看一个具体的project.json配置
一般情况下我们开发.NET Core的应用时只需使用别名为:netcoreapp1.0的框架即可。