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

相关推荐
Eiceblue33 分钟前
使用 C# 将 Excel 转换为 Markdown 表格(含批量转换示例)
开发语言·c#·excel
不会编程的懒洋洋3 小时前
WPF XAML+布局+控件
xml·开发语言·c#·视觉检测·wpf·机器视觉·视图
唐青枫3 小时前
别再层层传参了!C#.NET AsyncLocal 异步上下文透传实战
c#·.net
明如正午4 小时前
【C#】托管调试助手 “PInvokeStackImbalance“:的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。
c#
Eiceblue5 小时前
C# 如何实现 Word 转 Excel ?分享两种实用方法
c#·word·excel
天才少女爱迪生5 小时前
word格式规范检测+自动修改【python】
python·c#·word
用户3721574261355 小时前
如何使用 C# 转换 PowerPoint 为 HTML:完整指南
c#
软泡芙6 小时前
【C# 】各种等待大全:从入门到精通
开发语言·c#·log4j
小邓的技术笔记6 小时前
.NET 10 使用 Microsoft.AspNetCore.OpenApi 实现 API 版本管理
.net
夏霞7 小时前
IIS 应用程序池 3 种标识:ApplicationPoolIdentity / LocalSystem / LocalService 权限区别(超清晰)
c#·.net