.NET 6 中的中断性变更

如果要将应用迁移到 .NET 6,则此处列出的中断性变更可能会影响到你。 变更按技术领域分组,例如 ASP.NET Core 或 Windows 窗体。

备注

本文是当前正在进行的工作。 这并不是 .NET 6 中的中断性变更的完整列表。 若要查询仍处于待发布状态的中断性变更,请查看 .NET 问题

ASP.NET Core

标题 二进制兼容 源兼容 已引入
AddDataAnnotationsValidation 方法已过时 ✔️
从 Microsoft.AspNetCore.App 共享框架中删除了程序集 ✔️
Blazor:RequestImageFileAsync 方法中的参数名称已更改 ✔️ 预览版 1
Blazor:已替换 WebEventDescriptor.EventArgsType 属性
Blazor:字节数组互操作 ✔️ 预览版 6
更改了 @microsoft/signalr-protocol-msgpack 中的 MessagePack 库 ✔️
ClientCertificate 属性不会对 HttpSys 触发重新协商 ✔️
EndpointName 元数据不自动设置 ✔️ RC 2
Kestrel:日志消息属性已更改 ✔️
Microsoft.AspNetCore.Http.Features 拆分 ✔️
中间件:HTTPS 重定向中间件会在 HTTPS 端口不明确时引发异常 ✔️
中间件:新 Use 重载 ✔️ 预览版 4
RC 1 中的最小 API 重命名 RC 1
RC 2 中的最小 API 重命名 RC 2
使用 System.Text.Json 时,MVC 不缓冲 IAsyncEnumerable 类型 ✔️ 预览版 4
可以为 Null 的引用类型注释已更改 ✔️
已过时和已删除的 API ✔️ 预览版 1
PreserveCompilationContext 不默认配置 ✔️
Razor:编译器不再生成 Views 程序集 ✔️ 预览版 3
Razor:日志记录 ID 更改 ✔️ RC1
Razor:RazorEngine API 标记为已过时 ✔️ 预览版 1
SignalR:Java 客户端已更新到 RxJava3 ✔️ 预览版 4
验证 TryParse 和 BindAsync 方法 RC 2

Core .NET 库

标题 二进制兼容 源兼容 已引入
API 已过时并带有非默认诊断 ID ✔️ 预览版 1
对可以为 Null 的引用类型注释的更改 ✔️ 预览版 1-2
“调试”方法中的条件字符串计算 ✔️ RC 1
Windows 上的 Environment.ProcessorCount 行为 ✔️ 预览版 2
Unix 上的 File.Replace 引发匹配 Windows 的异常 ✔️ 预览版 7
FileStream 使用 Unix 上的共享锁来锁定文件 ✔️ 预览版 1
FileStream 不再将文件偏移量与操作系统同步 预览版 4
FileStream.Position 在 ReadAsync 或 WriteAsync 完成后更新 预览版 4
过时 API 的新诊断 ID ✔️ 预览版 5
AssociatedMetadataTypeTypeDescriptionProvider 中新的可为 Null 的注释 ✔️ RC 2
新的 System.Linq.Queryable 方法重载 ✔️ 预览版 3-4
已从包中删除较旧的框架版本 ✔️ 预览版 5
参数名称已更改 ✔️ 预览版 1
数据流派生类型中的参数名称 ✔️ 预览版 1
DeflateStream、GZipStream 和 CryptoStream 中的部分和零字节读取 ✔️ 预览版 6
标准数字格式分析精度 ✔️ 预览版 2
接口中的静态抽象成员 ✔️ 预览版 7
StringBuilder.Append 重载和计算顺序 ✔️ RC 1
仅在 Windows 上支持 System.Drawing.Common 预览版 7
System.Security.SecurityContext 被标记为过时 ✔️ RC 1
Task.FromResult 可能返回单一实例 ✔️ 预览版 1
来自 BackgroundService 的未经处理的异常 ✔️ 预览版 4
XmlDocument.XmlResolver 为 Null 性更改 ✔️ RC 1
针对无效索引的 XNodeReader.GetAttribute 行为 ✔️ 预览版 2

密码

标题 二进制兼容 源兼容 已引入
CreateEncryptor 方法针对不正确的反馈大小引发异常 ✔️ 预览版 7

Entity Framework Core

EF Core 6 中的中断性变更

Extensions

标题 二进制兼容 源兼容 已引入
AddProvider 检查非 null 提供程序 ✔️ RC 1
FileConfigurationProvider.Load 引发 InvalidDataException ✔️ RC 1
解析已释放的 ServiceProvider 引发异常 ✔️ RC 1

全球化

标题 二进制兼容 源兼容 已引入
全球化固定模式下的区域性创建和大小写映射 预览版 7

Interop

标题 二进制兼容 源兼容 已引入
接口中的静态抽象成员 ✔️ 预览版 7

JIT 编译器

标题 二进制兼容 源兼容 已引入
根据 ECMA-335 强制调用参数 ✔️ ✔️ 预览版 1

网络

标题 二进制兼容 源兼容 已引入
从 SPN 中删除了用于 Kerberos 和协商的端口 ✔️ RC 1
WebRequest、WebClient 和 ServicePoint 已过时 ✔️ 预览版 1

SDK 中 IsInRole 中的声明

标题 二进制兼容 源兼容 已引入
dotnet run-p 选项已弃用 ✔️ 预览版 6
早期版本不支持模板中的 C# 代码 ✔️ ✔️ 预览版 7
隐式包含 EditorConfig 文件 ✔️
生成适用于 macOS 的 apphost ✔️ 预览版 6
针对发布输出中的重复文件生成错误 ✔️ 预览版 1
从 ProjectReference 协议中删除了 GetTargetFrameworkProperties 和 GetNearestTargetFramework ✔️ 预览版 1
C# 项目中的隐式全局 using 指令 ✔️ RC 1
ARM64 上模拟 x64 的安装位置 ✔️ RC 2
MSBuild 不再支持调用 GetType() RC 1
OutputType 不会自动设置为 WinExe ✔️ RC 1
未指定自包含时出现 RuntimeIdentifier 警告 ✔️ RC 1

序列化

标题 二进制兼容 源兼容 已引入
IAsyncEnumerable 序列化 ✔️ 预览版 4
JSON 源-生成 API 重构 ✔️ RC 2
JsonNode 不再支持 C# dynamic 类型 ✔️ 预览版 7
集合属性上的 JsonNumberHandlingAttribute ✔️ RC 1
新的 JsonSerializer 源生成器重载 ✔️ 预览版 6

Windows 窗体

标题 二进制兼容 源兼容 已引入
C# 模板使用应用程序启动 ✔️ RC 1
所选的 TableLayoutSettings 属性会引发 InvalidEnumArgumentException ✔️ 预览版 1
与 DataGridView 相关的 API 现在引发 InvalidOperationException ✔️ 预览版 4
ListViewGroupCollection 方法引发新的 InvalidOperationException ✔️ RC 2
增加了 NotifyIcon.Text 最大文本长度 ✔️ 预览版 1
一些 API 引发 ArgumentNullException ✔️ 预览版 1-4
如果节点被分配到其他地方,则 TreeNodeCollection.Item 抛出异常 ✔️ 预览版 1