.NET

维基百科,自由的百科全书
(重定向自.NET Core
跳转到导航 跳转到搜索
.NET
File:Microsoft .NET logo.svg
开发者.NET基金会
首次发布2016年6月27日,​9年前​(2016-06-27
当前版本
    Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    源代码库
    • {{URL|example.com|可选的显示文本}}
    Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    编程语言C++C#F#VB.NET
    引擎
      Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
      操作系统WindowsLinuxmacOS
      类型软件框架
      许可协议MIT许可证[1]
      网站dotnet.microsoft.com

      .NET(3.1版以前称作.NET Core)是微软开发的第一个跨平台 (WindowsmacOSLinux)的应用程序开发框架(Application Framework)。.NET也是微软在一开始发展时就开源的软件平台[2],它经常也会拿来和现有的开源 .NET平台Mono比较。

      .NET包含 .NET Framework的类别库,但与 .NET Framework不同的是 .NET采用包化(Packages)的管理方式,应用程序只需要获取需要的组件即可,与 .NET Framework大包式安装的作法截然不同,同时各包亦有独立的版本线(Version line),不再硬性要求应用程序跟随主线版本。

      .NET项目的主要目标有 [3]

      1. 支持或可以移转(port)到更多的操作系统平台与芯片架构(也就是未来项目会跨出x86平台)。
      2. 具有引人注目的性能与高可靠度。
      3. 开发人员能快速与直觉的获取 .NET开发环境。
      4. 在直觉与具生产力的情况下建造应用程序、使用文件、示例与NuGet组件。

      历史[编辑]

      .NET Core 1.0于2016年6月27日发布。

      2020年11月,微软发布了 .NET 5.0[4],统一了.NET的各个平台的碎片版本: .NET Framework 4.8、.NET Standard、.NET Core 3.1、Mono和Xamarin等。

      此后,微软每年11月发布一个 .NET 的大版本更新,并将偶数大版本指定为长期支持(LTS)版本。

      2021年11月,微软发布了 .NET 6.0[5],为LTS版本,提升了性能并完善了跨平台开发能力。

      2022年11月,微软发布了 .NET 7.0[6],进一步提升性能和开发体验,增强了云原生和容器支持。

      2023年11月,微软发布了 .NET 8.0[7],作为LTS版本,继续在性能、多平台和AI场景方面优化。

      2024年11月,微软发布了 .NET 9.0[8],聚焦性能提升和云原生应用,并持续完善开发工具链。

      2025年11月,微软发布了 .NET 10.0[9]


      版本 发布日期 一同发布的产品 最新补丁版本 补丁发布日期 终止支持[10]
      停止支持: .NET Core 1.0 2016-06-27[11] Visual Studio 2015 Update 3 1.0.16 2019年5月14日 2019年6月27日
      停止支持: .NET Core 1.1 2016-11-16[12] Visual Studio 2017 Version 15.0 1.1.13 2019年5月14日 2019年6月27日
      停止支持: .NET Core 2.0 2017-08-14[13] Visual Studio 2017 Version 15.3 2.0.9 2018年7月10日 2018年10月1日
      停止支持: .NET Core 2.1 2018-05-30[14] Visual Studio 2017 Version 15.7 2.1.30 (LTS 2021年8月19日 2021年8月21日
      停止支持: .NET Core 2.2 2018-12-04[15] Visual Studio 2019 Version 16.0 2.2.8 2019年11月19日 2019年12月23日
      停止支持: .NET Core 3.0 2019-09-23[16] Visual Studio 2019 3.0.3 2020年2月18日 2020年3月3日
      停止支持: .NET Core 3.1 2019-12-03[17] Visual Studio 2019 3.1.32 (LTS 2022年12月13日 2022年12月13日
      停止支持: .NET 5 2020-11-10 Visual Studio 2019 Version 16.8 5.0.17 2022年5月10日 2022年5月10日
      停止支持: .NET 6 2021-11-08 Visual Studio 2022 Version 17.0 6.0.36 (LTS 2024年11月12日 2024年11月12日
      停止支持: .NET 7 2022-11-08 Visual Studio 2022 Version 17.4 7.0.20 2024年5月29日 2024年5月14日
      支持中: .NET 8 2023-11-14 Visual Studio 2022 Version 17.8 8.0.22 (LTS 2025年11月11日 2026年11月10日
      支持中: .NET 9 2024-11-12 Visual Studio 2022 Version 17.12 9.0.11 2025年11月19日 2026年11月10日
      最新版本: .NET 10 2025-11-11 Visual Studio 2026 Version 18.0.1 10.0.100 (LTS 2025年11月11日 2028年11月14日
      格式:
      支持中
      最新版本
      最新预览
      从未发布

      核心功能[编辑]

      .NET是由许多项目所组成,除了基本的类别库(Core FX)之外,也包含采用RyuJIT编译的执行平台Core CLR、编译器平台.NET Compiler Platform英语.NET Compiler Platform、采用AOT编译技术运行优化的包Core RT(.NET Core Runtime),以及跨平台的MSIL编译器LLILC(LLVM-based MSIL Compiler)等项目。

      同时,微软也发展了一个建置技术文件的平台docfx [18],并运用于 .NET的文件网站。

      RyuJIT[编辑]

      RyuJIT是微软发展的新式即地编译器(Just-in-Time Compiler),用以取代现有的 .NET Framework的JIT以及JIT64即地编译器,依据微软公布的测试报告,RyuJIT的性能较前一代的JIT提升约25%,并支持SIMD(Single Instruction, Multiple Data)的技术。RyuJIT同时应用于 .NET Framework 4.6以及 .NET Core[19]

      Core CLR[编辑]

      Core CLR移植 .NET Framework的CLR的功能,包含核心程序库mscorlib、JIT编译器、垃圾收集器(GC)以及其他执行MSIL所需要的执行期环境。

      Core RT[编辑]

      Core RT是以预先编译英语Ahead-of-time compilation为主的核心功能,在 .NET Core内称为Core RT,在UWP则是称为 .NET Native。

      Core RT会在建造时期(非执行期)在编译时将MSIL转换成平台原生的机器代码,以获取较短的启动时间(JIT采用的是执行时期编译,使得启动时间拉长),以及存储器用量减少的优点。Core RT会在不同的平台使用不同的AOT技术:

      • Windows上使用的是 .NET Native。
      • macOS与Linux上使用的是LLILC(同时支持JIT和AOT)。

      LLILC[编辑]

      LLILC(LLVM-based MSIL Compiler,英文发音为 "lilac")是 .NET在非Windows平台的MSIL编译器[20],基于ECMA-335(Common Language Infrastructure)的标准将MSIL编译成原生码执行,适用于可运行LLVM的操作系统,例如macOS与Linux操作系统。

      LLILC同时支持JIT(内含RyuJIT的实现) 以及AOT(未来将开始支持)的编译方式。

      因为RyuJIT的跨平台能力与性能逐渐追上,LLILC的Github仓库已于2022年被归档,不再维护 [21]

      Roslyn[编辑]

      .NET Compiler Platform(项目代码为Roslyn)是将 .NET平台的编译架构标准化的平台,它可提供程序管理工具 (如集成开发环境) 相当多的情报,用以发展有助于编写程序与管理程序结构所需要的功能,例如类型信息、语法结构、参考链接、语义、编译器、自动化、错误回报等等功能,只要是遵循CLI标准的编程语言,都可以利用 .NET Compiler Platform实现出编译器,让程序管理工具能实现如语法提示、语法自动完成、关键字高亮等可视化能力。

      .NET Compiler Platform可同时支持 .NET Framework 4.6以上版本,.NET Core也原生支持。

      包管理[编辑]

      .NET Core v1.0时期[编辑]

      .NET Core的类别库采用NuGet包化的架构,应用程序只需要使用project.json的dependencies区段加入指定包版本的参考,就能获得该包的功能,与以往 .NET Framework大包式的提供方法完全不同。.NET Core团队宣布已经有98%的 .NET Framework主要类别库移转到 .NET Core平台[22]

      例如下列project.json内容,可直接加入 .NET Standard Library(v1.0.0-rc2-23901)的参考。

      {
          "version": "1.0.0-*",
          "compilationOptions": {
              "emitEntryPoint": true
          },
      
          "dependencies": {
              "NETStandard.Library": "1.0.0-rc2-23901"
          },
      
          "frameworks": {
              "netstandardapp1.5": {
                  "imports": "dnxcore50"
              }
          }
      }
      

      .NET Standard Library是一个总括型的NuGet Package,其内包含了这些类别库包:

      • Microsoft.DotNet.CoreHost
      • NETStandard.Platform
      • System.Collections.Concurrent
      • System.Linq
      • System.Runtime.Numerics
      • System.Text.RegularExpressions

      其中的NETStandard.Platform也是一个总括型包,包含了下列类别库包:

      • Microsoft.NETCore.Platforms
      • Microsoft.NETCore.Runtime
      • Microsoft.Win32.Primitives
      • System.AppContext
      • System.Collections
      • System.Diagnostics.Debug
      • System.Diagnostics.Tools
      • System.Diagnostics.Tracing
      • System.Globalization
      • System.Globalization.Calendars
      • System.IO
      • System.IO.FileSystem
      • System.IO.FileSystem.Primitives
      • System.Net.Primitives
      • System.Net.Sockets
      • System.Reflection
      • System.Reflection.Extensions
      • System.Reflection.Primitives
      • System.Reflection.TypeExtensions
      • System.Runtime
      • System.Runtime.Extensions
      • System.Runtime.Handles
      • System.Runtime.InteropServices
      • System.Runtime.InteropServices.RuntimeInformation
      • System.Text.Encoding
      • System.Text.Encoding.Extensions
      • System.Threading
      • System.Threading.Tasks
      • System.Threading.Timer

      开发人员只需要使用NETStandard.Library就能加入所有必要的 .NET Core类别库参考,但若不需要这么多组件,也可以只加入特定的包即可,不一定都要加入NETStandard.Library。

      .NET Core v1.1时期[编辑]

      对于微软来说,.NET Core 1.0(以及早期开发时)使用project.json来处理包管理与版本相依的问题,是因为很多工具还没赶上(例如微软主力的建置工具MSBuild),再加上project.json/xproj架构并不兼容于以MSBuild为主的工具链 (Toolchain),若是要修改成兼容 project.json/xproj 架构的话可能会付出极大成本,因此在 .NET Core 1.0 RC2 发布不久,官方就宣布要将project.json/xproj系统移回到以MSBuild为主的csproj [23],例如下列csproj的例子即可看到包参考的内容。

      <Project Sdk="Microsoft.NET.Sdk.Web">
      
        <PropertyGroup>
          <TargetFramework>netcoreapp1.1</TargetFramework>
        </PropertyGroup>
      
        <PropertyGroup>
          <PackageTargetFallback>$(PackageTargetFallback);portable-net45+win8+wp8+wpa81;</PackageTargetFallback>
        </PropertyGroup>
      
        <PropertyGroup>
          <UserSecretsId>aspnet-MyCoolWebApplication-e119bc96-38e9-44ab-b4d3-d54964ade9b1</UserSecretsId>
          <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
        </PropertyGroup>
        <ItemGroup>
          <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.0" />
          <PackageReference Include="Microsoft.AspNetCore" Version="1.1.1" />
          <PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="1.1.1" />
          <PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="1.1.1" />
          <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="1.1.1" />
          <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.2" />
          <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.1" />
          <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.1.1" PrivateAssets="All" />
          <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.1" />
          <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="1.1.1" PrivateAssets="All" />
          <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.0" PrivateAssets="All" />
          <PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="1.1.1" />
          <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.1" />
          <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="1.1.0" PrivateAssets="All" />
          <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="1.1.0" />
        </ItemGroup>
        <ItemGroup>
          <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" />
          <DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="1.0.0" />
          <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0" />
        </ItemGroup>
      
      </Project>
      

      由于 .NET Core移回了MSBuild架构,因此在Visual Studio 2017的 .NET Core工具内,已恢复可直接于IDE的GUI界面中编修包参考的功能。

      应用程序类型[编辑]

      .NET基于跨平台能力,在 .NET Core 3.0之前,并没有将与GUI高度相关的API移植到 .NET Core内,因此像是Windows Forms或是Windows Presentation Foundation(WPF)并未移植到 .NET Core。[24].NET支持控制台应用程序(Console Application)以及类别库(Class Library)类型的项目。

      不过从 .NET Core 3开始,微软在其Universal Windows Platform(UWP)开发平台使用了 .NET[25],并且利用 .NET Native技术将其性能提升至十分接近原生码的速度。

      ASP.NET Core则以控制台应用程序驱动其托管环境Kestrel Server以支持ASP.NET Core程序的执行。

      .NET CLI[编辑]

      .NET CLI(Command-Line Interface)指令列工具是 .NET处理建造、执行与编辑工作的主要工具 [26],有几个主要的动作:

      指令 帮助
      dotnet new 产生新的基本 .NET 项目内容 (包含 project.json、Program.cs 以及 NuGet.config)
      dotnet restore 还原所参考的 NuGet 包
      dotnet build 建造 .NET 项目
      dotnet publish 产生可发行的 .NET 项目 (包含所属的 Runtime)
      dotnet run 编译与立即执行 .NET 项目 (较适用于 exe 型项目)
      dotnet repl 启动交互式的对话
      dotnet pack 将项目的产出封装成 NuGet 包

      与其他平台的关系[编辑]

      .NET经常会拿来与其他平台做比较,尤其是它的源头 .NET Framework以及另一个相似性质的开源平台Mono。

      .NET Framework[编辑]

      据微软的帮助,.NET Core和 .NET Framework是子集(Subset)与超集(Superset)的关系,.NET Core将会实现出部分的 .NET Framework功能 (基本上是不含用户界面的部分),例如 JIT(.NET Core采用 RyuJIT)、垃圾收集器(GC)以及类型(包含基本类型以及泛型类型等)[27]。.NET Framework与 .NET Core已经在 .NET 5及以后版本合并为统一的 .NET平台。

      Mono[编辑]

      Mono是另一个已发展许久的 .NET Framework跨平台开源版本,起初由社群主导,并由Xamarin等技术推动了.NET跨平台应用的开发。在.NET Core问世后,微软逐步将跨平台的核心功能和支持纳入微软官方的.NET生态中,最终在.NET5及以后版本将.NET Core和Mono合并至统一的.NET平台。此后不再区分.NET Framework、.NET Core和Mono[27]

      Mono的最后一个大版本于2024年2月发布,之后微软将其移交至Wine进行管理[28]

      然而,Mono仍然具有其特定的用途,例如作为Unity游戏引擎和Xamarin。Android/Xamarin.iOS的运行环境,因为其提供的轻量级JIT编译和AOT(Ahead Of Time)功能。

      与ASP.NET Core的关系[编辑]

      .NET Core与ASP.NET Core的关系其实一开始并不是主从关系 [29],ASP.NET Core的开发初期(ASP.NET 5).NET Core还没有开始起跑,因此ASP.NET Core当时有自己的执行期与工具,一开始称为Project K,后来改为DNX(.NET Execution Environment),DNX本身就具有可独立运作的执行能力,不需要依赖 .NET Core执行,但是这样会变成 .NET Core和ASP.NET Core双头马车的现象,在 .NET Core逐渐成熟之后,微软也决定要将这两个各自独立发展的产品线集成在一起,DNX也将因改用 .NET Core执行期而终止开发,DNX的功能将由 .NET Core以及旗下的 .NET CLI接替提供,集成后的版本将在1.0 RC2时发布。

      支持操作系统[编辑]

      .NET 9支持下列操作系统[30]

      操作系统 版本 平台 配置
      Windows 10 Version 1607+ x64, x86, Arm64
      Windows 11 Version 2200+ x64, x86, Arm64
      Windows Server 2012+ x64, x86 全功能版、Server Core
      Windows Nano Server Version 2019+ x64
      Windows Server Core 2012+ x64,x86
      Alpine Linux 3.19+ x64, Arm32, Arm64
      CentOS 9+ x64, Arm64,ppc664le,s390x
      Debian 12+ x64, Arm32, Arm64
      Fedora 40+ x64, Arm32, Arm64
      OpenSUSE 15.5+ x64
      Red Hat Enterprise Linux 8+ x64, Arm64
      SUSE Linux Enterprise 12 SP2+ x64, Arm64,ppc664le,s390x
      Ubuntu 18.04+ x64, Arm32, Arm64
      macOS 13+ x64, Arm64
      iOS 16.0+ Arm64
      tvOS 12.2+ Arm64
      Android API 21+ x64, Arm32, Arm64

      参考[编辑]

      1. ^ core/LICENSE.TXT. GitHub. [2018-06-04]. (原始内容存档于2020-05-01). 
      2. ^ Overview of .NET Implementations Archive.today存档,存档日期2016-02-27,
      3. ^ NET Core Roadmap. [2016-03-13]. (原始内容存档于2019-09-06). 
      4. ^ Announcing .NET 5.0. .NET Blog. Microsoft. November 10, 2020 [2022-08-25]. (原始内容存档于2021-02-18). 
      5. ^ Announcing .NET 6. .NET Blog. Microsoft. November 8, 2021 [2022-08-25]. (原始内容存档于2022-01-02). 
      6. ^ .NET 7 is Available Today. .NET Blog. Microsoft. November 8, 2022 [2022-11-09]. (原始内容存档于2022-12-22). 
      7. ^ Seth, Gaurav. Announcing .NET 8. .NET Blog. 2023-11-14 [2025-06-04] (en-US). 
      8. ^ Team, N. E. T. Announcing .NET 9. .NET Blog. 2024-11-12 [2025-06-04] (en-US). 
      9. ^ Team, N. E. T. Announcing .NET 10. .NET Blog. 2025-11-11 [2025-11-24] (en-US). 
      10. ^ .NET and .NET Core official support policy. .NET. Microsoft. [2022-08-25]. (原始内容存档于2020-06-01). 
      11. ^ Announcing .NET Core 1.0. .NET Blog. Microsoft. June 27, 2016 [2022-08-25]. (原始内容存档于2020-06-01). 
      12. ^ Announcing .NET Core 1.1. .NET Blog. Microsoft. November 16, 2016 [2022-08-25]. (原始内容存档于2020-06-01). 
      13. ^ Announcing .NET Core 2.0. .NET Blog. Microsoft. August 14, 2017 [2022-08-25]. (原始内容存档于2020-06-01). 
      14. ^ Announcing .NET Core 2.1. .NET Blog. Microsoft. May 30, 2018 [2022-08-25]. (原始内容存档于2019-12-25). 
      15. ^ Announcing .NET Core 2.2. .NET Blog. Microsoft. December 4, 2018 [2022-08-25]. (原始内容存档于2019-02-16). 
      16. ^ Announcing .NET Core 3.0. .NET Blog. Microsoft. September 23, 2019 [2022-08-25]. (原始内容存档于2020-06-01). 
      17. ^ Announcing .NET Core 3.1. .NET Blog. Microsoft. December 3, 2019 [2022-08-25]. (原始内容存档于2020-06-01). 
      18. ^ Generate your API documentation with DocFX. [2016-03-13]. (原始内容存档于2016-04-11). 
      19. ^ JIT Compiler Structure. [2016-03-13]. (原始内容存档于2017-03-27). 
      20. ^ LLILC Architecture Overview. [2016-03-13]. (原始内容存档于2017-03-27). 
      21. ^ Dotnet. LLILC Is Now Archived. Github. [2025-08-09]. 
      22. ^ Announcing .NET Core and ASP.NET 5 RC. [2016-03-13]. (原始内容存档于2016-03-13). 
      23. ^ Changes to Project.json. [2017-03-08]. (原始内容存档于2017-03-08). 
      24. ^ Carter, Phillip; Knezevic, Zlatko. .NET Core – .NET Goes Cross-Platform with .NET Core. MSDN Magazine. Microsoft. 2016-04. 
      25. ^ .NET and Universal Windows Platform Development. [2016-03-13]. (原始内容存档于2016-03-23). 
      26. ^ Intro to .NET Core CLI. [2016-03-13]. (原始内容存档于2020-06-01). 
      27. ^ 27.0 27.1 .NET Core Home. [2016-03-13]. (原始内容存档于2016-02-11). 
      28. ^ mono. Thank you to all the Mono developers!. GitHub. [2025-02-22]. 
      29. ^ About .NET Core. [2016-03-13]. (原始内容存档于2016-03-13). 
      30. ^ dotnet. .NET 9 - Supported OS versions. github. [2024-12-18]. (原始内容存档于2024-12-28).