[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"consumer-news-detail-952":3,"consumer-news-interaction-952":41,"consumer-news-related-952":44},{"detail":4,"item":36},{"card":5,"schemaVersion":23,"fields":24,"content":30},{"id":6,"kind":7,"targetType":8,"targetId":9,"subtype":7,"typeLabel":10,"title":11,"subtitle":12,"summary":13,"coverUrl":14,"badgeText":15,"href":16,"sourceName":12,"meta":17,"metrics":20,"tags":21,"resolved":22},"NEWS_ARTICLE:952","news","NEWS_ARTICLE",952,"资讯",".NET 11 RC1 发布：拿到\"准生证\"，生产环境可以上了！","博客园","从 Preview 1 到 RC1，.NET 11 的拼图基本完整了：Runtime Async 反超状态机模型、CoreCLR 登陆 WebAssembly、CLI 全面 NativeAOT 化（dotnet tool list 快 5.5 倍）、C# 15 补齐 union 和 labeled","https:\u002F\u002Fimg2024.cnblogs.com\u002Fblog\u002F510\u002F202609\u002F510-20260909153805786-850851443.png","","\u002Fnews\u002F952",[18,19],"2026","软件开发",{},[19],true,"consumer-content-detail-v1",{"sourceName":12,"authorName":25,"categoryName":19,"summary":13,"description":13,"publishTime":26,"updateTime":27,"sourceUrl":28,"language":29},"张善友","2026-09-10T07:14","2026-09-11T15:22","https:\u002F\u002Fwww.cnblogs.com\u002Fshanyou\u002Fp\u002F22904825","中文",{"format":31,"policy":32,"normalized":22,"html":33,"text":34,"wordCount":35,"hasBody":22},"HTML","NEWS_CONTENT_V1","\u003Cp>微软正式发布了 \u003Cstrong>.NET 11 的第一个候选发布版本（Release Candidate 1）\u003C\u002Fstrong>。\u003C\u002Fp>\n\u003Cp>和之前的 Preview 不同，RC1 附带了 \u003Cstrong>go-live 支持许可证\u003C\u002Fstrong>——这意味着你可以放心地把它用在生产环境，遇到问题能获得官方支持。按照惯例，接下来就是 RC2，然后 11 月正式 GA。作为 STS（标准期限支持）版本，.NET 11 将获得 2 年支持。\u003C\u002Fp>\n\u003Cp>工具链方面，.NET 11 RC1 由全新的 \u003Cstrong>Visual Studio 2026 Insiders\u003C\u002Fstrong> 提供支持，VS Code 用户则搭配最新的 \u003Cstrong>C# Dev Kit\u003C\u002Fstrong> 扩展即可。\u003C\u002Fp>\n\u003Ch2>这一版都有哪些新东西？挑重点给大家捋一遍。\u003Cbr>\u003Cimg src=\"https:\u002F\u002Fi1.wp.com\u002Fimg2024.cnblogs.com\u002Fblog\u002F510\u002F202609\u002F510-20260909153805786-850851443.png?w=720&amp;quality=65&amp;strip=all\" alt=\"image\">\u003C\u002Fh2>\n\u003Ch2>一、C# 15 正式转正，不用再开 preview 开关了\u003C\u002Fh2>\n\u003Cp>RC1 最重要的信号之一：\u003Cstrong>面向 .NET 11 的项目，默认语言版本就是 C# 15\u003C\u002Fstrong>。整个预览周期里打磨的语言特性全部转正：\u003C\u002Fp>\n\u003Cul>\n \u003Cli>\u003Cstrong>联合类型（union types）\u003C\u002Fstrong>\u003C\u002Fli>\n \u003Cli>\u003Cstrong>带标签的 \u003Ccode>break\u003C\u002Fcode> \u002F \u003Ccode>continue\u003C\u002Fcode>\u003C\u002Fstrong>\u003C\u002Fli>\n \u003Cli>集合表达式参数（collection expression arguments）\u003C\u002Fli>\n \u003Cli>非虚静态接口成员\u003C\u002Fli>\n \u003Cli>封闭类层级（closed class hierarchies）\u003C\u002Fli>\n \u003Cli>扩展索引器\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Union 类型毕业\u003C\u002Fh3>\n\u003Cp>以前想表达\"一个方法可能返回成功或失败\"，要么搞异常，要么手写 OneOf 风格的包装类。现在原生支持，而且\u003Cstrong>不再需要 \u003Ccode>&lt;LangVersion&gt;preview&lt;\u002FLangVersion&gt;\u003C\u002Fcode>\u003C\u002Fstrong>：\u003C\u002Fp>\n\u003Cpre>\u003Ccode>public record Success(string Message);\npublic record Failure(int ErrorCode);\n\npublic union Result(Success, Failure);\n\nstatic string Describe(Result result) =&gt; result switch\n{\n    Success(var message) =&gt; message,\n    Failure(var errorCode) =&gt; $\"Error {errorCode}\"\n};\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>带标签的 break\u002Fcontinue\u003C\u002Fh3>\n\u003Cp>写过嵌套循环的人，谁没为了跳出外层循环搞过 \u003Ccode>bool found = false\u003C\u002Fcode> 的 flag 大法？现在可以直接：\u003C\u002Fp>\n\u003Cpre>\u003Ccode>outer: for (int x = 0; x &lt; xMax; x++)\n{\n    for (int y = 0; y &lt; yMax; y++)\n    {\n        if (GetValue(x, y) == target)\n        {\n            break outer;   \u002F\u002F 直接跳出外层循环！\n        }\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Unsafe Evolution 继续打磨（仍为预览特性）\u003C\u002Fh3>\n\u003Cp>内存安全规则（updated-memory-safety-rules）这一版补齐了几块拼图：\u003Ccode>await\u003C\u002Fcode> 现在可以出现在 \u003Ccode>unsafe\u003C\u002Fcode> 上下文里；\u003Ccode>safe\u003C\u002Fcode> 关键字可以标注在 \u003Ccode>LibraryImport\u003C\u002Fcode> 这类生成代码上；而给委托、静态构造函数、析构函数标 \u003Ccode>unsafe\u003C\u002Fcode> 则会直接报错——因为它们本来就不构成有意义的 unsafe 上下文。\u003C\u002Fp>\n\u003Chr>\n\u003Ch2>二、基础库：跨平台能力大补课\u003C\u002Fh2>\n\u003Ch3>进程信号与退出状态\u003C\u002Fh3>\n\u003Cp>\u003Ccode>Process\u003C\u002Fcode> 终于原生支持发送 POSIX 信号和检查终止状态了，不用再绕 \u003Ccode>SafeProcessHandle\u003C\u002Fcode>：\u003C\u002Fp>\n\u003Cpre>\u003Ccode>using System.Diagnostics;\nusing System.Runtime.InteropServices;\n\nif (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS())\n{\n    using Process process = Process.Start(\"sleep\", \"30\")!;\n    process.Signal(PosixSignal.SIGTERM);\n    ProcessExitStatus status = await process.WaitForExitStatusAsync();\n    Console.WriteLine(status);\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Ccode>ProcessExitStatus\u003C\u002Fcode> 能区分\"正常退出\"和\"被信号干掉\"，做进程管理的同学狂喜。\u003C\u002Fp>\n\u003Ch3>Linux 上的类型化 DNS 解析\u003C\u002Fh3>\n\u003Cp>Preview 7 引入的 \u003Ccode>Dns.ResolveSrv\u003C\u002Fcode>、\u003Ccode>ResolveMx\u003C\u002Fcode>、\u003Ccode>ResolveTxt\u003C\u002Fcode>、\u003Ccode>ResolveCName\u003C\u002Fcode> 等强类型 DNS API（当时仅 Windows 实现），这一版 \u003Cstrong>Linux 也安排上了\u003C\u002Fstrong>，基于平台解析器配置，还支持自定义 DNS 服务器列表。微服务和服务发现场景实用性拉满。\u003C\u002Fp>\n\u003Ch3>JSON：新数值类型 + Union 序列化\u003C\u002Fh3>\n\u003Cp>\u003Ccode>System.Text.Json\u003C\u002Fcode> 内置了 \u003Ccode>BFloat16\u003C\u002Fcode>、\u003Ccode>Decimal32\u003C\u002Fcode>、\u003Ccode>Decimal64\u003C\u002Fcode>、\u003Ccode>Decimal128\u003C\u002Fcode> 的转换器（反射和源生成都支持）。同时 JSON 基础设施完成了对 C# union 类型的支持——通过结构分类器，可以按\"区分属性\"自动判断该反序列化成 union 的哪个 case：\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[JsonUnion(TypeClassifier = typeof(JsonUnionTypeStructuralClassifier))]\npublic union PetUnion(Dog, Cat);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>另外，封闭类型层级的多态序列化现在可以通过 \u003Ccode>[JsonPolymorphic(InferClosedTypePolymorphism = true)]\u003C\u002Fcode> 按类型逐个开启，库作者不用强迫使用者改全局 \u003Ccode>JsonSerializerOptions\u003C\u002Fcode> 了。\u003C\u002Fp>\n\u003Ch3>异步选项验证\u003C\u002Fh3>\n\u003Cp>配置验证支持异步了：实现 \u003Ccode>IAsyncValidateOptions&lt;TOptions&gt;\u003C\u002Fcode>，启动时就能做\"DNS 解析得通才算配置合法\"这类检查。相应地，\u003Ccode>IStartupValidator\u003C\u002Fcode> 被标记过时，由 \u003Ccode>IAsyncStartupValidator\u003C\u002Fcode> 接替。\u003C\u002Fp>\n\u003Ch3>小而美的改进\u003C\u002Fh3>\n\u003Cul>\n \u003Cli>\u003Ccode>BitArray\u003C\u002Fcode> 可以直接从 \u003Ccode>ReadOnlySpan&lt;bool\u002Fbyte\u002Fint&gt;\u003C\u002Fcode> 构造——Arm64 基准快 33~51%，布尔输入的分配最多降低 89%\u003C\u002Fli>\n \u003Cli>\u003Ccode>DeflateEncoder\u003C\u002Fcode>、\u003Ccode>GZipDecoder\u003C\u002Fcode> 等无流编解码器新增 \u003Ccode>Reset()\u003C\u002Fcode>，处理多个载荷不用反复分配\u003C\u002Fli>\n \u003Cli>Unix 上支持 TLS channel binding 校验，为 ASP.NET Core 的 Negotiate 认证扩展保护（Extended Protection）铺路\u003C\u002Fli>\n \u003Cli>Apple 平台上 \u003Ccode>AesGcm\u003C\u002Fcode>、\u003Ccode>ChaCha20Poly1305\u003C\u002Fcode> 走 CryptoKit 空 AAD 快速路径，16 字节小载荷加密提速约 25%\u003C\u002Fli>\n \u003Cli>\u003Ccode>Aes\u003C\u002Fcode> 新增 RFC 3394 无填充 Key Wrap 支持（JOSE 库常用）\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>还有一个实验性大招：\u003Ccode>System.Net.Security\u003C\u002Fcode> 提供了\u003Cstrong>调用方驱动的非阻塞 TLS 状态机\u003C\u002Fstrong>（\u003Ccode>TlsBufferSession\u003C\u002Fcode> \u002F \u003Ccode>TlsSocketSession\u003C\u002Fcode>），应用自己控制缓冲区和 I\u002FO 调度——做高性能网络中间件的可以关注，注意 API 带 \u003Ccode>SYSLIB5007\u003C\u002Fcode> 实验诊断。\u003C\u002Fp>\n\u003Chr>\n\u003Ch2>三、运行时\u003C\u002Fh2>\n\u003Cul>\n \u003Cli>\u003Cstrong>Unix 进程内崩溃报告\u003C\u002Fstrong>：崩溃时能从进程内部直接产出诊断信息\u003C\u002Fli>\n \u003Cli>\u003Cstrong>\u003Ccode>Half\u003C\u002Fcode> 运算用上 FP16 硬件指令\u003C\u002Fstrong>：半精度浮点操作在支持的芯片上直接硬加速\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>回顾整个 .NET 11 周期，运行时的\"头号工程\" \u003Cstrong>Runtime Async\u003C\u002Fstrong>（运行时原生异步）已经从 Preview 1 一路打磨到反超传统状态机模型：异步方法进入分层编译后，TechEmpower JSON 基准预热阶段的分配速率暴降 92%；热路径 \u003Ccode>await\u003C\u002Fcode> 内联后循环一亿次从 191ms 降到 32ms。再加上 CoreCLR on WebAssembly 已能端到端跑完整个运行时库测试套件——Blazor WebAssembly 换上 CoreCLR 的日子越来越近了。\u003C\u002Fp>\n\u003Chr>\n\u003Ch2>四、SDK 与 CLI\u003C\u002Fh2>\n\u003Ch3>dotnet test 全面加强\u003C\u002Fh3>\n\u003Cp>RC1 的 \u003Ccode>dotnet test\u003C\u002Fcode>（Microsoft.Testing.Platform 路径）新增两组\u003Cstrong>运行级\u003C\u002Fstrong>控制（放在 \u003Ccode>--\u003C\u002Fcode> 之前对整个运行生效）：\u003C\u002Fp>\n\u003Cpre>\u003Ccode># 整个测试运行最多 90 秒\ndotnet test --timeout 90s\n\n# 挂 5 个就止损\ndotnet test --maximum-failed-tests 5\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>移动测试也支棱起来了：支持 Android、iOS、macOS、Mac Catalyst 目标，可以选择真机、模拟器，还有配套的 \u003Ccode>dotnet new androidtest\u003C\u002Fcode> \u002F \u003Ccode>iostest\u003C\u002Fcode> 等模板。多模块运行时可以用 \u003Ccode>--results-directory-layout per-module\u003C\u002Fcode> 防止同名报告互相覆盖。\u003C\u002Fp>\n\u003Ch3>容器发布：可复现 + 跳过冗余上传\u003C\u002Fh3>\n\u003Cul>\n \u003Cli>设置 \u003Ccode>SOURCE_DATE_EPOCH\u003C\u002Fcode> 后，相同输入的多次发布会产出\u003Cstrong>相同的镜像摘要\u003C\u002Fstrong>（digest），供应链审计友好\u003C\u002Fli>\n \u003Cli>推送到远端仓库前会先检查 manifest 是否已存在，已存在则跳过层处理只打标签，重复推送快得多\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>文件化应用（File-based Apps）继续进化\u003C\u002Fh3>\n\u003Cp>单文件 \u003Ccode>app.cs\u003C\u002Fcode> 的 Native AOT 启动路径现在能\u003Cstrong>复用已有构建产物\u003C\u002Fstrong>——没改代码就不用重编译。\u003Ccode>dotnet format app.cs\u003C\u002Fcode> 也可以直接格式化单文件应用了。\u003C\u002Fp>\n\u003Ch3>dotnet format 提速\u003C\u002Fh3>\n\u003Cp>文件夹模式下，\u003Ccode>dotnet format\u003C\u002Fcode> 只沿\"将被格式化的文件\"的祖先目录查找 \u003Ccode>.editorconfig\u003C\u002Fcode>，不再扫描 \u003Ccode>node_modules\u003C\u002Fcode> 这种无关子树。某 monorepo 基准里，格式化单个文件从 1.09 秒降到 0.55 秒。\u003C\u002Fp>\n\u003Chr>\n\u003Ch2>五、ASP.NET Core\u003C\u002Fh2>\n\u003Cul>\n \u003Cli>\u003Cstrong>SignalR 认证刷新 API 定型\u003C\u002Fstrong>：服务端 API 和 TypeScript 客户端双双支持认证刷新，Blazor Server 电路在认证刷新后也会自动更新——为 Azure SignalR 等场景铺路\u003C\u002Fli>\n \u003Cli>\u003Cstrong>OpenAPI 会如实反映 \u003Ccode>[Obsolete]\u003C\u002Fcode> 标记的 API\u003C\u002Fstrong>，并且可以为构建期 OpenAPI 生成选择环境\u003C\u002Fli>\n \u003Cli>\u003Cstrong>Negotiate 认证使用 TLS channel binding\u003C\u002Fstrong>（配合前面提到的 Unix 端支持），防中继攻击\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>回望 Preview 7 里那些大货——Blazor 电路自动暂停省电、\u003Ccode>CacheView\u003C\u002Fcode> SSR 输出缓存、五个新 Blazor 分析器（BL0012~BL0016）、验证体系本地化内置——都已在 RC1 中趋于稳定。\u003C\u002Fp>\n\u003Chr>\n\u003Ch2>六、MAUI 与桌面端\u003C\u002Fh2>\n\u003Cul>\n \u003Cli>.NET MAUI：RC1 聚焦测试能力（对接 \u003Ccode>dotnet test\u003C\u002Fcode> 的设备测试）、控件与平台功能完善、XAML 改进；跨平台 Passkey、XAML 增量热重载、ASP.NET Core 风格的 Shell 路由模板等 Preview 7 重磅特性全部带上\u003C\u002Fli>\n \u003Cli>Windows Forms：新增 kiosk（信息亭）模式管理能力，\u003Cstrong>现代视觉风格（Modern visual styles）在 RC1 正式稳定\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Chr>\n\u003Ch2>七、上手方式\u003C\u002Fh2>\n\u003Cul>\n \u003Cli>下载 .NET 11 SDK（RC1）：\u003Ca href=\"https:\u002F\u002Fdotnet.microsoft.com\u002Fdownload\u002Fdotnet\u002F11.0\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">https:\u002F\u002Fdotnet.microsoft.com\u002Fdownload\u002Fdotnet\u002F11.0\u003C\u002Fa>\u003C\u002Fli>\n \u003Cli>Windows 用户推荐搭配 \u003Cstrong>Visual Studio 2026 Insiders\u003C\u002Fstrong>；VS Code 用户安装最新 \u003Cstrong>C# Dev Kit\u003C\u002Fstrong>\u003C\u002Fli>\n \u003Cli>想看新特性演示，可以蹲每周的 .NET 社区 standup 和 .NET Unboxed 直播\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>升级提醒\u003C\u002Fstrong>：RC1 仍有几处值得注意的破坏性变更——\u003C\u002Fp>\n\u003Col>\n \u003Cli>\u003Cstrong>数值转换严格正确舍入\u003C\u002Fstrong>：\u003Ccode>decimal\u003C\u002Fcode> 与二进制浮点之间的转换改为\"精确值一次舍入\"。\u003Ccode>double\u003C\u002Fcode> 字面量 \u003Ccode>1.23\u003C\u002Fcode> 转 \u003Ccode>decimal\u003C\u002Fcode> 不再恰好得到 \u003Ccode>1.23\u003C\u002Fcode>，\u003Cstrong>且没有兼容开关\u003C\u002Fstrong>——依赖旧结果的测试和序列化数据需要更新\u003C\u002Fli>\n \u003Cli>\u003Cstrong>HTTP 高基数指标改为可观测仪表\u003C\u002Fstrong>：直接用 \u003Ccode>MeterListener\u003C\u002Fcode> 的代码需要调用 \u003Ccode>RecordObservableInstruments\u003C\u002Fcode> 才能收到 \u003Ccode>open_connections\u003C\u002Fcode>、\u003Ccode>active_requests\u003C\u002Fcode> 的测量值\u003C\u002Fli>\n \u003Cli>\u003Cstrong>\u003Ccode>Configuration\u003C\u002Fcode> 环境变量成为 CLI 默认值\u003C\u002Fstrong>：脚本里如果设置了环境变量 \u003Ccode>Configuration\u003C\u002Fcode>，\u003Ccode>dotnet build\u003C\u002Fcode>\u002F\u003Ccode>test\u003C\u002Fcode> 会默认采用它而不是 \u003Ccode>Debug\u003C\u002Fcode>，需要时显式传 \u003Ccode>--configuration Debug\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>升级前建议通读一遍官方发布说明的 Breaking changes 部分。\u003C\u002Fp>\n\u003Chr>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fi1.wp.com\u002Fimg2024.cnblogs.com\u002Fblog\u002F510\u002F202609\u002F510-20260909133731251-232933607.jpg?w=720&amp;quality=65&amp;strip=all\" alt=\"1\">\u003C\u002Fp>\n\u003Ch2>写在最后\u003C\u002Fh2>\n\u003Cp>从 Preview 1 到 RC1，.NET 11 的拼图基本完整了：\u003Cstrong>Runtime Async 反超状态机模型、CoreCLR 登陆 WebAssembly、CLI 全面 NativeAOT 化（\u003Ccode>dotnet tool list\u003C\u002Fcode> 快 5.5 倍）、C# 15 补齐 union 和 labeled break\u002Fcontinue、ZIP 加密、Blazor 省电摸鱼……\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>RC1 拿到 go-live 许可，意味着正式版已没有悬念，只剩抛光。这个 11 月的 STS 版本，诚意十足。\u003C\u002Fp>\n\u003Cp>你最期待哪个特性？欢迎在评论区聊聊。\u003C\u002Fp>\n\u003Cp>\u003Cem>本文内容整理自\u003Ca href=\"https:\u002F\u002Fdevblogs.microsoft.com\u002Fdotnet\u002Fdotnet-11-rc-1\u002F\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">微软官方 .NET 博客\u003C\u002Fa>及 dotnet\u002Fcore 仓库发布说明。\u003C\u002Fem>\u003C\u002Fp>","微软正式发布了 .NET 11 的第一个候选发布版本（Release Candidate 1）。 和之前的 Preview 不同，RC1 附带了 go-live 支持许可证——这意味着你可以放心地把它用在生产环境，遇到问题能获得官方支持。按照惯例，接下来就是 RC2，然后 11 月正式 GA。作为 STS（标准期限支持）版本，.NET 11 将获得 2 年支持。 工具链方面，.NET 11 RC1 由全新的 Visual Studio 2026 Insiders 提供支持，VS Code 用户则搭配最新的 C# Dev Kit 扩展即可。 这一版都有哪些新东西？挑重点给大家捋一遍。 一、C# 15 正式转正，不用再开 preview 开关了 RC1 最重要的信号之一：面向 .NET 11 的项目，默认语言版本就是 C# 15。整个预览周期里打磨的语言特性全部转正： 联合类型（union types） 带标签的 break \u002F continue 集合表达式参数（collection expression arguments） 非虚静态接口成员 封闭类层级（closed class hierarchies） 扩展索引器 Union 类型毕业 以前想表达\"一个方法可能返回成功或失败\"，要么搞异常，要么手写 OneOf 风格的包装类。现在原生支持，而且不再需要 \u003CLangVersion>preview\u003C\u002FLangVersion>： public record Success(string Message); public record Failure(int ErrorCode); public union Result(Success, Failure); static string Describe(Result result) => result switch { Success(var message) => message, Failure(var errorCode) => $\"Error {errorCode}\" }; 带标签的 break\u002Fcontinue 写过嵌套循环的人，谁没为了跳出外层循环搞过 bool found = false 的 flag 大法？现在可以直接： outer: for (int x = 0; x \u003C xMax; x++) { for (int y = 0; y \u003C yMax; y++) { if (GetValue(x, y) == target) { break outer; \u002F\u002F 直接跳出外层循环！ } } } Unsafe Evolution 继续打磨（仍为预览特性） 内存安全规则（updated-memory-safety-rules）这一版补齐了几块拼图：await 现在可以出现在 unsafe 上下文里；safe 关键字可以标注在 LibraryImport 这类生成代码上；而给委托、静态构造函数、析构函数标 unsafe 则会直接报错——因为它们本来就不构成有意义的 unsafe 上下文。 二、基础库：跨平台能力大补课 进程信号与退出状态 Process 终于原生支持发送 POSIX 信号和检查终止状态了，不用再绕 SafeProcessHandle： using System.Diagnostics; using System.Runtime.InteropServices; if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS()) { using Process process = Process.Start(\"sleep\", \"30\")!; process.Signal(PosixSignal.SIGTERM); ProcessExitStatus status = await process.WaitForExitStatusAsync(); Console.WriteLine(status); } ProcessExitStatus 能区分\"正常退出\"和\"被信号干掉\"，做进程管理的同学狂喜。 Linux 上的类型化 DNS 解析 Preview 7 引入的 Dns.ResolveSrv、ResolveMx、ResolveTxt、ResolveCName 等强类型 DNS API（当时仅 Windows 实现），这一版 Linux 也安排上了，基于平台解析器配置，还支持自定义 DNS 服务器列表。微服务和服务发现场景实用性拉满。 JSON：新数值类型 + Union 序列化 System.Text.Json 内置了 BFloat16、Decimal32、Decimal64、Decimal128 的转换器（反射和源生成都支持）。同时 JSON 基础设施完成了对 C# union 类型的支持——通过结构分类器，可以按\"区分属性\"自动判断该反序列化成 union 的哪个 case： [JsonUnion(TypeClassifier = typeof(JsonUnionTypeStructuralClassifier))] public union PetUnion(Dog, Cat); 另外，封闭类型层级的多态序列化现在可以通过 [JsonPolymorphic(InferClosedTypePolymorphism = true)] 按类型逐个开启，库作者不用强迫使用者改全局 JsonSerializerOptions 了。 异步选项验证 配置验证支持异步了：实现 IAsyncValidateOptions\u003CTOptions>，启动时就能做\"DNS 解析得通才算配置合法\"这类检查。相应地，IStartupValidator 被标记过时，由 IAsyncStartupValidator 接替。 小而美的改进 BitArray 可以直接从 ReadOnlySpan\u003Cbool\u002Fbyte\u002Fint> 构造——Arm64 基准快 33~51%，布尔输入的分配最多降低 89% DeflateEncoder、GZipDecoder 等无流编解码器新增 Reset()，处理多个载荷不用反复分配 Unix 上支持 TLS channel binding 校验，为 ASP.NET Core 的 Negotiate 认证扩展保护（Extended Protection）铺路 Apple 平台上 AesGcm、ChaCha20Poly1305 走 CryptoKit 空 AAD 快速路径，16 字节小载荷加密提速约 25% Aes 新增 RFC 3394 无填充 Key Wrap 支持（JOSE 库常用） 还有一个实验性大招：System.Net.Security 提供了调用方驱动的非阻塞 TLS 状态机（TlsBufferSession \u002F TlsSocketSession），应用自己控制缓冲区和 I\u002FO 调度——做高性能网络中间件的可以关注，注意 API 带 SYSLIB5007 实验诊断。 三、运行时 Unix 进程内崩溃报告：崩溃时能从进程内部直接产出诊断信息 Half 运算用上 FP16 硬件指令：半精度浮点操作在支持的芯片上直接硬加速 回顾整个 .NET 11 周期，运行时的\"头号工程\" Runtime Async（运行时原生异步）已经从 Preview 1 一路打磨到反超传统状态机模型：异步方法进入分层编译后，TechEmpower JSON 基准预热阶段的分配速率暴降 92%；热路径 await 内联后循环一亿次从 191ms 降到 32ms。再加上 CoreCLR on WebAssembly 已能端到端跑完整个运行时库测试套件——Blazor WebAssembly 换上 CoreCLR 的日子越来越近了。 四、SDK 与 CLI dotnet test 全面加强 RC1 的 dotnet test（Microsoft.Testing.Platform 路径）新增两组运行级控制（放在 -- 之前对整个运行生效）： # 整个测试运行最多 90 秒 dotnet test --timeout 90s # 挂 5 个就止损 dotnet test --maximum-failed-tests 5 移动测试也支棱起来了：支持 Android、iOS、macOS、Mac Catalyst 目标，可以选择真机、模拟器，还有配套的 dotnet new androidtest \u002F iostest 等模板。多模块运行时可以用 --results-directory-layout per-module 防止同名报告互相覆盖。 容器发布：可复现 + 跳过冗余上传 设置 SOURCE_DATE_EPOCH 后，相同输入的多次发布会产出相同的镜像摘要（digest），供应链审计友好 推送到远端仓库前会先检查 manifest 是否已存在，已存在则跳过层处理只打标签，重复推送快得多 文件化应用（File-based Apps）继续进化 单文件 app.cs 的 Native AOT 启动路径现在能复用已有构建产物——没改代码就不用重编译。dotnet format app.cs 也可以直接格式化单文件应用了。 dotnet format 提速 文件夹模式下，dotnet format 只沿\"将被格式化的文件\"的祖先目录查找 .editorconfig，不再扫描 node_modules 这种无关子树。某 monorepo 基准里，格式化单个文件从 1.09 秒降到 0.55 秒。 五、ASP.NET Core SignalR 认证刷新 API 定型：服务端 API 和 TypeScript 客户端双双支持认证刷新，Blazor Server 电路在认证刷新后也会自动更新——为 Azure SignalR 等场景铺路 OpenAPI 会如实反映 [Obsolete] 标记的 API，并且可以为构建期 OpenAPI 生成选择环境 Negotiate 认证使用 TLS channel binding（配合前面提到的 Unix 端支持），防中继攻击 回望 Preview 7 里那些大货——Blazor 电路自动暂停省电、CacheView SSR 输出缓存、五个新 Blazor 分析器（BL0012~BL0016）、验证体系本地化内置——都已在 RC1 中趋于稳定。 六、MAUI 与桌面端 .NET MAUI：RC1 聚焦测试能力（对接 dotnet test 的设备测试）、控件与平台功能完善、XAML 改进；跨平台 Passkey、XAML 增量热重载、ASP.NET Core 风格的 Shell 路由模板等 Preview 7 重磅特性全部带上 Windows Forms：新增 kiosk（信息亭）模式管理能力，现代视觉风格（Modern visual styles）在 RC1 正式稳定 七、上手方式 下载 .NET 11 SDK（RC1）：https:\u002F\u002Fdotnet.microsoft.com\u002Fdownload\u002Fdotnet\u002F11.0 Windows 用户推荐搭配 Visual Studio 2026 Insiders；VS Code 用户安装最新 C# Dev Kit 想看新特性演示，可以蹲每周的 .NET 社区 standup 和 .NET Unboxed 直播 升级提醒：RC1 仍有几处值得注意的破坏性变更—— 数值转换严格正确舍入：decimal 与二进制浮点之间的转换改为\"精确值一次舍入\"。double 字面量 1.23 转 decimal 不再恰好得到 1.23，且没有兼容开关——依赖旧结果的测试和序列化数据需要更新 HTTP 高基数指标改为可观测仪表：直接用 MeterListener 的代码需要调用 RecordObservableInstruments 才能收到 open_connections、active_requests 的测量值 Configuration 环境变量成为 CLI 默认值：脚本里如果设置了环境变量 Configuration，dotnet build\u002Ftest 会默认采用它而不是 Debug，需要时显式传 --configuration Debug 升级前建议通读一遍官方发布说明的 Breaking changes 部分。 写在最后 从 Preview 1 到 RC1，.NET 11 的拼图基本完整了：Runtime Async 反超状态机模型、CoreCLR 登陆 WebAssembly、CLI 全面 NativeAOT 化（dotnet tool list 快 5.5 倍）、C# 15 补齐 union 和 labeled break\u002Fcontinue、ZIP 加密、Blazor 省电摸鱼…… RC1 拿到 go-live 许可，意味着正式版已没有悬念，只剩抛光。这个 11 月的 STS 版本，诚意十足。 你最期待哪个特性？欢迎在评论区聊聊。 本文内容整理自微软官方 .NET 博客及 dotnet\u002Fcore 仓库发布说明。",4912,{"id":6,"kind":7,"title":11,"summary":13,"image":14,"href":16,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":40},"2026 · 软件开发","#2563eb","16 \u002F 10",[19],{"targetType":8,"targetId":9,"likedByMe":42,"likeCount":43,"commentCount":43,"contentLikeCount":43,"contentCommentCount":43,"sourceLikeCount":43,"sourceCommentCount":43},false,0,[45,52,58,65,72,78,84,91],{"id":46,"kind":7,"title":47,"summary":48,"image":49,"href":50,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":51},"NEWS_ARTICLE:927","HelloCrab - 短视频开源爬虫，仅供学习参考","HelloCrab 基于 Avalonia、Playwright、AI与 FFmpeg 的跨平台桌面采集器，支持9大平台，以及 Android、iOS、Browser 远程控制端。 Made By ChatGPT &amp; Vincent with ❤ 平台 是否接入 哔哩哔哩 ✅ 抖音 ✅ 快手","https:\u002F\u002Fwww.cnblogs.com\u002Fhupo376787\u002Fp\u002FScreenshot\u002FWindows.jpg","\u002Fnews\u002F927",[19],{"id":53,"kind":7,"title":54,"summary":55,"image":15,"href":56,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":57},"NEWS_ARTICLE:929",".NET 异常处理的\"暗门\"：代码里写满 catch，你依然能抓住它——从一个 AI Agent 运行时的源码说起","一个健壮的系统，必然到处都是有意的 catch；异常被消化不等于问题不存在。 观测与韧性，是一个硬币的两面——降级逻辑保证系统不崩，FirstChance 保证你能看见它为什么降级。","\u002Fnews\u002F929",[19],{"id":59,"kind":7,"title":60,"summary":61,"image":62,"href":63,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":64},"NEWS_ARTICLE:933","写给 C++ 工程师的 OpenClaw.NET 上手指南：用你熟悉的 C++ 思维，跑起一个生产级 AI Agent","它像一个「基于 boost.asio + REST 端点的常驻服务」——对外是 HTTP \u002F WebSocket \u002F 各 IM 的 webhook，对内跑着一个能调工具、读写记忆、跨渠道对话的 AI Agent——只不过协程不用你手写 promise_type，内存不用你管 new\u002Fdelete。","https:\u002F\u002Fimg2024.cnblogs.com\u002Fblog\u002F510\u002F202609\u002F510-20260905070811424-1837144874.jpg","\u002Fnews\u002F933",[19],{"id":66,"kind":7,"title":67,"summary":68,"image":69,"href":70,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":71},"NEWS_ARTICLE:961","从零搭建ELK日志采集系统：Filebeat + Logstash + ES + Kibana 保姆级教程","轻量级架构，一份配置全搞定 一、前言 你是不是还在用 tail -f 和 grep 在多台服务器上翻日志？系统一出问题，就要登录三五台机器，来回切换窗口，定位一个Bug耗时半小时。 ELK 是业界最成熟的日志集中管理方案。本文将带你用 Docker Compose 一键部署 Filebeat + L","https:\u002F\u002Fimg2024.cnblogs.com\u002Fblog\u002F1465907\u002F202609\u002F1465907-20260909162947190-195439361.png","\u002Fnews\u002F961",[19],{"id":73,"kind":7,"title":74,"summary":75,"image":62,"href":76,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":77},"NEWS_ARTICLE:980","写给 Rust 工程师的 OpenClaw.NET 上手指南：用你熟悉的 Rust 思维，跑起一个生产级 AI Agent","它像一个「axum 应用」——对外是 HTTP \u002F WebSocket \u002F 各 IM 的 webhook，对内跑着一个能调工具、读写记忆、跨渠道对话的 AI Agent——只不过 async 不用选 runtime，也不用和借用检查器格斗。","\u002Fnews\u002F980",[19],{"id":79,"kind":7,"title":80,"summary":81,"image":15,"href":82,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":83},"NEWS_ARTICLE:999","Vane.Dispatch 1.0.0 发布：一个与容器、传输层零耦合的 .NET 服务分发引擎","Vane.Dispatch 1.0.0 发布：一个与容器、传输层零耦合的 .NET 服务分发引擎 它的前身，可以追溯到一个叫 Ndf 的项目。从那时算起，已经过去了十多年。今天，它以 Vane.Dispatch 1.0.0 的名字正式发布。 序：十年磨一剑 做后端的人大抵都绕不开同一个问题：如何把&","\u002Fnews\u002F999",[19],{"id":85,"kind":7,"title":86,"summary":87,"image":88,"href":89,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":90},"NEWS_ARTICLE:1002","从对标 Java 到对标 Go：Native AOT 的\"无痛化\"之路，走到哪一站了？","从 .NET 7 的 demo 到 .NET 12 的无痛化，这条路要走五年。慢吗？慢。但对比一下：Java 的 GraalVM Native Image 折腾了更久，至今 Spring 生态的 AOT 体验仍在打补丁；Go 则是天生就站在终点线上——.NET 是在背着二十年的反射遗产追赶一个轻装上","https:\u002F\u002Fimg2024.cnblogs.com\u002Fblog\u002F510\u002F202609\u002F510-20260907133134585-1733425989.png","\u002Fnews\u002F1002",[19],{"id":92,"kind":7,"title":93,"summary":94,"image":15,"href":95,"meta":37,"badge":10,"author":12,"stats":-1,"accent":38,"coverRatio":39,"tags":96},"NEWS_ARTICLE:1012","java 多线程开发系列之八：玩转多线程（线程的中断）","之前的线程协作，讲的是通过wait和notify方法，多线程之间进行互相条件唤醒的办法。除此之外我们还需要进行中断操作。等待和唤醒可参考前文https:\u002F\u002Fwww.cnblogs.com\u002Fjilodream\u002Fp\u002F22770136设想这样一个场景：长工在给地主家干活，日出而作，日落而息。思路很简单：","\u002Fnews\u002F1012",[19]]