.NET 8 中的中断性变更
如果要将应用迁移到 .NET 8,则此处列出的中断性变更可能会影响到你。 变更按技术领域分组,例如 ASP.NET Core 或 Windows 窗体。
本文将每个中断性变更分类为二进制不兼容或源不兼容,或者作为行为更改:
二进制文件不兼容 - 当针对新的运行时或组件运行时,现有二进制文件可能会遇到行为上的中断性变更(例如加载或执行失败),如果是这样,则需要重新编译。
源代码不兼容 - 当使用新的 SDK 或组件重新编译,或以新的运行时为目标时,现有源代码可能需要更改源才能成功编译。
行为更改 - 现有代码和二进制文件在运行时的行为可能会有所不同。 如果不需要新的行为,则需要更新和重新编译现有代码。
ASP.NET Core
标题 | 更改类型 |
---|---|
ConcurrencyLimiterMiddleware 已过时 | 源不兼容 |
已移除用于序列化的自定义转换器 | 行为变更 |
ISystemClock 已过时 | 源不兼容 |
最小 API:IFormFile 参数需要防伪检查 | 行为变更 |
速率限制中间件需要 AddRateLimiter | 行为变更 |
安全令牌事件将返回 JsonWebToken | 行为变更 |
对于 Web SDK 项目,TrimMode 默认为 full | 源不兼容 |
容器
Title | 更改类型 |
---|---|
从 Alpine 映像中移除了“ca-certificates”包 | 不兼容二进制 |
Debian 容器映像已升级到 Debian 12 | 二进制不兼容/行为变更 |
默认 ASP.NET Core 端口已更改为 8080 | 行为变更 |
从 Alpine 和 Debian 映像中移除了 Kerberos 包 | 不兼容二进制 |
从 Alpine 映像中移除了“libintl”包 | 行为变更 |
多平台容器标记仅限 Linux 使用 | 行为变更 |
Linux 映像中的新“应用”用户 | 行为变更 |
Core .NET 库
加密
标题 | 更改类型 | 已引入 |
---|---|---|
macOS 上的 AesGcm 身份验证标记大小 | 行为变更 | 预览版 1 |
RSA.EncryptValue 和 RSA.DecryptValue 过时 | 源不兼容 | 预览版 1 |
部署
标题 | 更改类型 |
---|---|
主机确定特定于 RID 的资产 | 二进制不兼容/行为变更 |
.NET Monitor 仅包括无发行版映像 | 行为变更 |
StripSymbols 默认为 true | 行为变更 |
Entity Framework Core
Extensions
全球化
标题 | 更改类型 |
---|---|
日期和时间转换器使用区域性参数 | 行为变更 |
TwoDigitYearMax 默认值为 2049 | 行为变更 |
Interop
标题 | 更改类型 |
---|---|
CreateObjectFlags.Unwrap 仅在目标实例上展开 | 行为变更 |
自定义封送器需要其他成员 | 源不兼容 |
已删除 IDispatchImplAttribute API | 不兼容二进制 |
删除了 JSFunctionBinding 隐式公共默认构造函数 | 不兼容二进制 |
SafeHandle 类型必须具有公共构造函数 | 源不兼容 |
网络
标题 | 更改类型 |
---|---|
SendFile 对于无连接套接字抛出 NotSupportedException | 行为变更 |
系统会比较 mailto: URI 中的用户信息 |
行为变更 |
反射
标题 | 更改类型 |
---|---|
IntPtr 不再用于函数指针类型 | 行为变更 |
SDK
标题 | 更改类型 |
---|---|
CLI 控制台输出使用 UTF-8 | 行为变更/源和二进制不兼容 |
完成后控制台编码不是 UTF-8 | 行为变更/二进制不兼容 |
容器默认使用“latest”标记 | 行为变更 |
“dotnet pack”使用发布配置 | 行为变更/源不兼容 |
“dotnet publish”使用发布配置 | 行为变更/源不兼容 |
-getItem、-getProperty 和 -getTargetResult 的重复输出 | 行为变更 |
不再添加 System.Net.Http 的隐式 using |
行为变更/源不兼容 |
MSBuild 自定义派生生成事件已弃用 | 行为变更 |
MSBuild 遵循 DOTNET_CLI_UI_LANGUAGE | 行为变更 |
特定于运行时的应用不是自包含的 | 源/二进制不兼容 |
--arch 选项不意味着自包含 | 行为变更 |
“dotnet restore”生成安全漏洞警告 | 行为变更 |
SDK 使用更小的 RID 图 | 行为变更/源不兼容 |
将 DebugSymbols 设置为 false 会禁用 PDB 生成 | 行为变更 |
.NET SDK 中包含源链接 | 源不兼容 |
剪裁可能无法与 .NET Standard 或 .NET Framework 配合使用 | 行为变更 |
默认情况下不为 .NET 工具安装未列出的包 | 行为变更 |
在外部生成中导入 .user 文件 | 行为变更 |
.NET 8 SDK 的版本要求 | 源不兼容 |
序列化
标题 | 更改类型 |
---|---|
已针对大多数项目禁用 BinaryFormatter | 行为变更 |
PublishedTrimmed 项目会让基于反射的序列化失败 | 行为变更 |
基于反射的反序列化程序主动解析元数据 | 行为变更 |