You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework与.NET Core程序集层级对比解析

.NET Framework与.NET Core的程序集流程差异解析

.NET Framework 程序集流程

  • 编译阶段:C#/VB等语言编译器将源码编译为MSIL/CIL(中间语言),同时生成包含元数据的程序集文件(.exe/.dll)。
  • 执行阶段:
    • 程序启动后,CLR(Common Language Runtime)加载程序集,通过JIT(即时编译器)将MSIL即时编译为对应CPU架构的原生代码。
    • 依赖Windows系统中的mscorlib.dll等核心类库,以及Windows特定的COM交互、WPF/WinForms等框架组件。

.NET Core 程序集流程

.NET Core的流程为跨平台设计,核心组件做了模块化拆分:

  • 编译阶段:
    • 同样通过Roslyn编译器将源码编译为CIL(与MSIL本质一致,命名统一为CIL),生成标准.NET程序集(.dll;控制台/桌面应用会附带平台特定的启动器.exe)。
    • 支持dotnet publish命令生成自包含部署包,打包应用程序集、CoreCLR运行时及依赖类库,无需目标机器预先安装.NET环境。
  • 执行阶段:
    • 由CoreCLR替代原CLR,负责程序集加载、JIT编译(默认使用RyuJIT编译器,性能优于旧版CLR的JIT)。
    • 可选AOT(提前编译):通过dotnet publish -r <runtime-id> -p:PublishAot=true将CIL直接编译为目标平台的原生二进制文件,运行时无需JIT,启动速度更快。
    • 核心类库拆分为System.Runtime等独立NuGet包,不再依赖单一的mscorlib.dll,实现跨平台API行为统一(如System.IO在各平台操作逻辑一致)。

核心编译执行差异

  • 运行时:.NET Framework依赖Windows专属CLR;.NET Core使用跨平台的CoreCLR,且CoreCLR开源,可自定义编译适配更多平台。
  • 部署模式:.NET Framework仅支持框架依赖部署(需目标机器预装对应版本);.NET Core支持框架依赖、自包含两种模式,自包含模式可打包运行时。
  • AOT支持:.NET Framework无原生AOT能力;.NET Core(及.NET 5+)提供成熟AOT编译,可生成单文件原生程序。
  • 类库架构:.NET Framework核心类库为紧密耦合的mscorlib.dll;.NET Core采用模块化设计,功能模块以独立NuGet包形式按需引用。
  • 跨平台:.NET Framework仅支持Windows;.NET Core支持Windows、Linux、macOS等多平台,还可通过Mono适配移动设备。

权威资料来源

  • .NET官方文档:涵盖.NET Framework与.NET Core(及后续版本)的程序集、编译执行全流程细节,包括各层级技术规范。
  • CoreCLR开源仓库:可查看CoreCLR源码,了解程序集加载、JIT编译的具体实现逻辑。
  • Roslyn编译器文档:Roslyn作为.NET官方编译器,其文档详细解释了源码到CIL的编译阶段细节。
  • .NET设计规范文档:包含.NET平台的程序集结构、元数据定义等底层规范,适用于Framework和Core。

内容的提问来源于stack exchange,提问作者Yisus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 22:16:18