.NET

.NET

在正式学习.NET 之前,我们先来了解几个概念

  • .NET

  • .NET Framework

  • .Net Core

  • .Net Standard

.NET 是一个广泛的平台,.NET Framework 和 .NET Core 是这个平台上两个不同的实现,分别针对不同的需求和环境

而 .NET Standard 则是为了提高库的可移植性而制定的标准

随着 .NET 5.0 及其后续版本的发布,.NET Core 和 .NET Framework 正逐渐合并到统一的 .NET 平台上,简化了开发者的开发体验


.NET Standard

.NET Standard 不是一个运行时或框架(不同于.NET Core 和 .NET Framework),而是一个规范,定义了一组 API,确保库在不同 .NET 实现之间保持一致性和可移植性(类似于Java SE的概念),所有在.NET上开发的框架都需要基于此规范来实现一些基础类库

.NET Standard 只包含元数据,不包含可执行代码(相当于接口规范)

而 .NET Core 和 .NET Framework基于此规范进行了不同的实现(具体的实现类)

自定义类库

同样的,基于这种规范编写的自定义类库可同时被.NET Core 和 .NET Framework引用,但基于.NET Core 或 .NET Framework编写的类库则不能够互相引用


.NET CLI

.NET 命令行接口 (CLI) 工具是用于开发、生成、运行和发布 .NET 应用程序的跨平台工具链

.NET CLI | Microsoft Learn


文件结构

在项目中,除了有C#的源代码文件(.cs)之外,还存在一些其他的文件和目录

csproj文件

csproj 文件是 C# 项目的核心配置文件,它定义了项目的基本信息、构建过程、引用的库和其他资源等

这个文件是由 Microsoft .NET 编译器使用来编译项目的

在.NET中,csproj的文件包含方式从文件中显式包含变成排除项


程序发布

在程序发布时,有部署模式选项

  • 依赖框架:发布程序很小,但需要目标计算机上存在框架依赖(.NET6)
  • 独立:发布程序很大,但无需目标计算机存在框架依赖

注:使用独立部署模式则需要目标系统


单文件发布

发布应用为单个文件

ReadyToRun

预先编译会对应用程序性能产生复杂的性能影响,这种影响可能很难预测。 通常情况下,程序集的大小将增长到两到三倍。 这种文件物理大小的增加可能会降低从磁盘加载程序集的性能,并增加进程的工作集。 但相对地,在运行时编译的方法数通常会大幅减少。 因此,启用 ReadyToRun,包含大量代码的大多数应用程序都会获得很大的性能增益。 由于 .NET 运行时库已使用 ReadyToRun 进行预编译,因此启用 ReadyToRun 时,具有少量代码的应用程序很可能不会获得显著改进。

裁剪未使用的代码

在 .NET 6 中,可以通过使用发布配置和一些特定的工具来裁剪未使用的代码。这有助于减小最终应用程序的大小,并可能提高性能