.NET SDK
.NET SDK

.NET SDK10.0.400

官方版无广告587

.NET SDK 是用于创建、编译、测试和发布跨平台 .NET 应用的官方开发工具链。

更新日期:
2026-08-11
语言:
en
平台:

0 人已下载 手机查看

.NET SDK 是创建、编译、测试和发布 .NET 应用所需的开发工具包,不等于只负责运行程序的 Runtime,也不等于 Visual Studio、VS Code 或 Rider 这些编辑器。当前官方页面把 .NET 10 标为 LTS 版本,SDK 稳定版为 10.0.400,发布日期为 2026-08-11;安装前最重要的是确认项目目标框架、操作系统架构、SDK 选择规则与最终部署方式。

先分清 SDK、Runtime 和编辑器

SDK 包含 dotnet CLI、编译器、MSBuild、模板、NuGet 还原和发布工具,负责把源代码变成可测试或可部署的产物。Runtime 只提供运行已构建应用所需的组件;SDK 会带上对应的 .NET Runtime,但单独安装 Runtime 不能替代开发环境。Visual Studio、VS Code、Rider 等编辑器可以调用 SDK,却不会改变项目实际选择的 SDK 版本。

组件 主要任务 常见误判
.NET SDK 创建模板、还原依赖、编译、测试、打包和发布 安装 Runtime 后就能执行 dotnet new
.NET Runtime 运行框架依赖的 .NET 应用 能运行程序就代表具备完整构建工具链
ASP.NET Core Runtime 运行 ASP.NET Core Web 应用和服务 把 Web 运行时当成 SDK 或桌面运行时
编辑器 / IDE 代码编辑、调试、项目导航和界面化任务 编辑器显示的 SDK 与终端实际解析的版本一定相同

如果目标只是运行别人发布的桌面、Web 或控制台程序,先看它要求的 Runtime;如果要创建项目、安装工作负载、执行测试或生成发布目录,才需要 SDK。这个区分能避免在服务器上安装不必要的开发组件,也能减少本地“能运行、不能构建”的误判。

先判断 LTS、补丁和预览版本

官方支持策略把偶数主版本作为 LTS 轨道,.NET 10 的支持期到 2028-11-14;当前页面同时展示 .NET 11 Preview,但预览版用于提前试用,不应在没有明确验证计划时作为生产默认。SDK 的完整版本号、Runtime 的补丁版本和 Visual Studio 的兼容版本不是同一个字段,更新时要分别记录。

选择对象 当前核验 适合怎么处理
.NET 10 SDK 10.0.400,2026-08-11 发布 新项目和需要较长支持周期的生产项目优先评估
.NET 10 Runtime 10.0.11,2026-08-11 补丁 运行已发布应用时按应用类型安装对应 Runtime
.NET 9 9.0.19,处于维护阶段 已有项目按兼容性维持,升级前验证目标框架和依赖
.NET 11 Preview 11.0.0-preview.7,非生产默认 只在测试分支、实验项目或明确的兼容性验证中使用

版本号还会影响 SDK feature band、模板和语言工具链。不要只看到“10.0”就认为所有 10.0 SDK 完全等价;项目若依赖特定模板、工作负载或构建行为,应在仓库中固定可接受的 SDK 范围,并把升级作为一次可回滚的变更。

按系统和架构选安装入口

.NET 10 SDK 官方页面列出 Windows、macOS 和 Linux 安装入口,并区分 x64、x86、Arm64,以及 Linux 的 Arm32 和 Alpine 变体。下载前先确认运行开发工具的主机架构;发布目标的架构可以在后续通过 Runtime Identifier(RID)另行选择,不要因为目标要部署到 ARM 就把开发机安装包也随意换成 ARM 版本。

主机环境 优先核对 常见选择
Windows Intel/AMD 64 位、旧 x86 或 Windows on Arm x64、x86、Arm64 安装器或 winget 入口
macOS Intel 还是 Apple Silicon x64 或 Arm64 安装器;不要把 Rosetta 运行状态当作芯片型号
Linux 发行版、C 库、CPU 架构和包管理策略 x64、Arm64、Arm32 或 Alpine 对应入口
CI / 容器 镜像标签、基础发行版、缓存和目标 RID 使用官方 SDK 镜像或锁定安装脚本版本,避免隐式升级

安装完成后先在新终端执行 dotnet --infodotnet --list-sdksdotnet --list-runtimes。它们分别帮助确认当前解析结果、已安装 SDK 列表和 Runtime 列表;如果 IDE 与终端结果不同,再检查 IDE 的工作目录、环境变量和它实际调用的 dotnet 路径。

从模板创建一个可运行项目

让 CLI 先建立项目边界

  1. 创建目录:为项目准备独立目录,避免在包含多个解决方案的父目录中误用模板或 global.json
  2. 生成模板:运行 dotnet new console --name HelloApp,Web、类库和测试项目则选择对应模板;模板只是起点,目标框架仍需结合项目约束检查。
  3. 还原并运行:进入项目目录执行 dotnet run。多数需要依赖的 CLI 命令会隐式执行 restore,网络或私有 NuGet 源异常时要把还原阶段单独看待。
  4. 记录产物边界:确认 .csproj、解决方案文件、目标框架、包引用和生成目录,不要只以终端出现 Hello World 判断项目已经适合交付。

官方 CLI 的优势在于编辑器之外也有一条可重复的入口:模板、构建、测试和发布都能放进脚本或 CI。编辑器可以提高体验,但项目真正的依赖关系和构建参数仍由项目文件、SDK、NuGet 源与命令行参数决定。

用 global.json 控制 SDK 解析

global.json 用来选择 .NET CLI 使用的 SDK 版本,与项目目标 Runtime 版本相互独立。没有它时,CLI 通常使用机器上可用的最高 SDK;写入具体版本后,rollForward 决定精确版本缺失时能否滚动到同一 feature band、更新补丁或更高版本。

配置目标 建议做法 风险边界
团队统一构建 提交包含完整 SDK 版本的 global.json,CI 使用相同版本或明确的滚动策略 开发机没安装目标 SDK 时会直接失败,需要提供安装说明
允许补丁更新 用合适的 rollForward 接受同一版本线内的较新补丁 不能把滚动策略当作跨大版本兼容保证
预览 SDK 实验 显式设置 allowPrerelease,放在独立分支或测试环境 Visual Studio 与命令行对预览版本的默认判断可能不同
多仓库工作区 确认 CLI 与 MSBuild 查找 global.json 的起点和祖先目录 在错误目录运行命令可能解析到另一份配置

排查“本地成功、CI 失败”时,先比较 dotnet --version、当前工作目录、global.json 位置、NuGet 源和目标框架,再决定是安装缺少的 SDK、调整滚动策略还是修复工作目录。直接删除 global.json 往往只是把版本漂移隐藏起来。

把构建、测试和发布拆开

开发循环最好分成可定位的阶段:先 restore,再 build,再 test,最后 publish。dotnet test 会构建并运行测试;dotnet publish 会编译应用、读取依赖并把部署所需文件写入输出目录。把它们合并成一个“发布失败”命令后,通常很难判断问题来自包源、编译器、测试运行器还是目标运行时。

  • 还原:确认 NuGet 源、锁定文件、私有包凭据和网络代理;公开日志不要输出访问令牌。
  • 构建:先使用明确的 --configuration Release 或 Debug 配置,检查目标框架和警告,再进入测试。
  • 测试:按项目或解决方案运行 dotnet test,需要时使用过滤器、结果日志和固定测试运行器。
  • 发布:明确输出目录、目标 RID、是否 self-contained,并保存发布目录清单和版本信息。

在 CI 中可以让 restore、build、test、publish 使用同一个 SDK 镜像和提交版本,但不要把缓存命中当成构建证据。缓存键至少应考虑 SDK、操作系统、架构、目标框架、锁定依赖和构建配置。

发布模式决定目标机需要什么

dotnet publish 的输出不是简单复制一个 DLL。framework-dependent 发布依赖目标机已有兼容 Runtime;self-contained 会把 Runtime 一并带上,但仍需为目标 RID 生成对应产物,文件体积、补丁责任和部署策略也会改变。

发布选择 目标机条件 交付前必须确认
Framework-dependent 目标机安装兼容 Runtime 目标 Runtime 版本、补丁状态、启动命令和托管环境
Self-contained 通常不要求目标机预装 .NET Runtime RID、平台架构、体积、更新和安全补丁责任
Runtime Identifier 指定如 win-x64linux-x64 等目标 原生依赖、文件路径、证书、时区和目标系统库
单文件 / 裁剪 / AOT 取决于项目类型和兼容性 反射、动态加载、启动性能、诊断和第三方库限制

如果只是验证项目能否编译,先执行默认的 dotnet build;如果要交付给另一台设备,再使用目标 RID 和明确的 self-contained 策略执行 dotnet publish。发布成功只说明构建链完成,不自动证明目标系统的服务权限、配置文件、外部数据库或原生依赖已经就绪。

按层排查 SDK 与发布问题

现象 优先检查 合理处理
找不到 SDK dotnet --info、PATH、安装目录和 global.json 安装匹配版本或修正配置,不要只升级 IDE。
模板或工作负载缺失 dotnet new listdotnet workload list、SDK feature band 确认模板/工作负载属于当前 SDK,必要时按官方说明安装。
restore 失败 NuGet 源、证书、代理、私有包权限和锁定文件 先固定错误和包版本,再修复源或凭据,不要关闭校验来绕过问题。
测试在 CI 失败 SDK、目标框架、测试运行器、时区、工作目录和并发 保存测试结果与诊断日志,区分编译失败和测试失败。
publish 成功但无法运行 RID、Runtime、原生库、配置、证书和服务权限 在接近目标的环境中运行发布目录并做最小启动验证。
升级后行为变化 SDK、Runtime、NuGet、Visual Studio 和项目目标框架的变化 分层回退或固定版本,保留可复现的构建记录。

.NET SDK 的稳定使用方式不是永远停留在某个旧版本,而是让版本、依赖、测试和发布目标都可追踪。新项目可以从 .NET 10 LTS 开始评估,维护旧项目则先看目标框架、包兼容性和部署环境,再决定升级 SDK、Runtime 还是只更新补丁。

相关软件

暂无评论

none
暂无评论...