简单来说,.NETCoreApp2.0 是 .NET Core 这个大的技术平台的一个具体的主版本。
可以把它们的关系理解为:
-
.NET Core :一个技术平台的名称,是一个跨平台、开源、高性能的应用程序开发框架。
-
.NETCoreApp2.0 :这个平台下 2.0 版本 的"目标框架",用于指定你的应用程序旨在哪个版本的框架上运行。
详细解释
1. .NET Core(平台)
.NET Core 是微软开发的一个跨平台的、开源的、模块化的应用程序开发平台。它用于构建各种类型的应用程序,如 Web 应用(ASP.NET Core)、控制台应用、云服务、微服务等。
它有自己的版本号,例如:
-
.NET Core 1.0
-
.NET Core 1.1
-
.NET Core 2.0
-
.NET Core 2.1
-
.NET Core 2.2
-
.NET Core 3.0
-
.NET Core 3.1
2. .NETCoreApp2.0(目标框架 moniker - TFM)
在开发 .NET Core 应用程序时,你需要在项目文件中指定你的项目目标 是哪个版本的框架。这个目标标识符就叫做 "目标框架名字对象"。
-
当你的项目目标是运行在 .NET Core 2.0 这个平台上时,你的 TFM 就是
netcoreapp2.0。 -
同理:
-
目标为 .NET Core 1.0 ->
netcoreapp1.0 -
目标为 .NET Core 2.1 ->
netcoreapp2.1 -
目标为 .NET Core 3.1 ->
netcoreapp3.1
-
这个 TFM 会出现在你的项目文件(如 .csproj)中:
xml
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
</Project>
这个配置的意义是:
-
编译时:编译器会使用 .NET Core 2.0 的 API 和语言规则来编译你的代码。
-
运行时:你的应用程序需要在一个安装了 .NET Core 2.0(或更高兼容版本,取决于设置)运行时 的环境中才能运行。
重要背景:现代的 .NET(.NET 5+)
理解这个关系时,有一个非常重要的背景信息:".NET Core" 这个品牌名称已经演进了。
从 .NET 5 开始,微软将 .NET Core、.NET Framework、Mono 等 .NET 变体统一 为一个产品,就叫 .NET。
-
.NET Core 3.1 是 ".NET Core" 这个名字的最后一个版本。
-
下一个版本直接叫 .NET 5 ,然后是 .NET 6 、.NET 7 、.NET 8。
相应地,目标框架名字对象(TFM)也发生了变化:
-
.NETCoreApp3.1->netcoreapp3.1 -
.NET 5.0->net5.0 -
.NET 6.0->net6.0 -
.NET 7.0->net7.0 -
.NET 8.0->net8.0
你可以看到,从 .NET 5 开始,TFM 中的 core 被去掉了,因为它已经是一个统一平台。
总结
| 概念 | 描述 | 举例 |
|---|---|---|
| .NET Core | 一个跨平台、开源的应用程序开发平台的名称。 | .NET Core 2.0, .NET Core 3.1 |
.NETCoreApp2.0 |
一个目标框架名字对象 ,特指应用程序的目标平台是 .NET Core 2.0。 | <TargetFramework>netcoreapp2.0</TargetFramework> |
| 关系 | 包含关系 。.NETCoreApp2.0 是 .NET Core 平台下的一个具体版本目标。 |
就像 "Windows 11" 和 "Windows" 的关系。 |
结论:
当你看到 netcoreapp2.0 时,你应该立刻意识到这是一个针对 .NET Core 2.0 平台的项目。它是一个特定于版本的标识符,而 .NET Core 是整个技术系列的通用名称。在当今的开发中,除非你在维护旧项目,否则建议使用新的统一 .NET 平台(如 .NET 6 或 .NET 8)。