.netcoreapp2.0与.Net Core是什么关系

简单来说,.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)。

相关推荐
淡海水12 小时前
10-01-互操作-C#与C++边界的内存管理
unity·c#·游戏引擎·.netcore·gc
WarPigs15 小时前
C#把byte[]以十六进制打印,带分割符
c#
暴走约伯16 小时前
【VFX工具链源码拆解 04】拯救丢失的绑定:Timeline 一键克隆与层级相对路径重映射算法
unity·c#·游戏引擎·硬件工程
1-1=016 小时前
C# 反射
c#·.net·.netcore
一叶星殇16 小时前
版本即契约:.NET 6 WebAPI 多版本治理与 Swagger 文档分治实践
mvc·.net
Jeff-Tsai17 小时前
Day 9:数据与定义分家,表单不必各自建类型
.net·架构设计·erp·definition-driven
步步为营DotNet17 小时前
.NET 可观测性选型:Metrics、ActivitySource、EventSource 到底该用哪个
c#·.net·metrics·可观测性
CSharp精选营18 小时前
我把 Ant Design Blazor 翻了一遍:Blazor 中后台组件库到底能不能用
.net·blazor·ant design blazor·中后台系统·mudblazor
IT规划师18 小时前
Redis 数据类型全解 - ZSet:两个编码,七种玩法(五)
redis·.net
吃一碗粉只付一碗钱1 天前
16-SqlSugar多库ConfigId与按实体选连接
sqlserver·c#