.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)。

相关推荐
Dr.勿忘4 小时前
开源Unity小框架:高效单例与模块化设计
游戏·unity·开源·c#·游戏引擎·游戏程序·gamejam
小码编匠5 小时前
.NET 免费开源的 Word 处理神器
后端·c#·.net
烛阴6 小时前
C#从数组到集合的演进与最佳实践
前端·c#
初九之潜龙勿用6 小时前
C# 操作Word模拟解析HTML标记输出带格式的文本
开发语言·c#·word·office
追烽少年x7 小时前
C#中并发集合---线程安全但无需加锁的高性能结构
c#
唐青枫8 小时前
一文理解 C#.NET Tuples:从基础到高级应用
c#·.net
2501_9411474215 小时前
Java高性能消息队列与Kafka实战分享:分布式消息处理与性能优化经验
c#·linq