本文介绍如何将 .NET 9 中的 ASP.NET Core 更新为 .NET 10 中的 ASP.NET Core。
先决条件
带有 ASP.NET 和 Web 开发工作负载的 Visual Studio 2022。
更新 global.json 中的 .NET SDK 版本
如果依赖文件 global.json 以特定 .NET SDK 版本为目标,请将 version 属性更新为已安装的 .NET 10 SDK 版本。 例如:
{
"sdk": {
- "version": "9.0.304"
+ "version": "10.0.100"
}
}
更新目标框架
将项目文件的 目标框架标识符 (TFM) 更新为 net10.0:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
- <TargetFramework>net9.0</TargetFramework>
+ <TargetFramework>net10.0</TargetFramework>
</PropertyGroup>
</Project>
更新包引用
在项目文件中,将每个Microsoft.AspNetCore.*属性Microsoft.EntityFrameworkCore.*Microsoft.Extensions.*、包引用System.Net.Http.Json的属性Version更新为 10.0.0 或更高版本。 例如:
<ItemGroup>
- <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="9.0.0" />
- <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0" />
- <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="9.0.0" />
- <PackageReference Include="System.Net.Http.Json" Version="9.0.0" />
+ <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="10.0.0" />
+ <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="10.0.0" />
+ <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="10.0.0" />
+ <PackageReference Include="System.Net.Http.Json" Version="10.0.0" />
</ItemGroup>
Blazor
Blazor 发行说明
有关新功能覆盖范围,请参阅 .NET 10 中 ASP.NET Core 中的新增功能。
使用 Blazor WebAssembly MSBuild 属性设置WasmApplicationEnvironmentName环境
本部分仅适用于独立 Blazor WebAssembly 应用。
该文件 Properties/launchSettings.json 不再用于控制独立 Blazor WebAssembly 应用中的环境。
使用应用的项目文件<WasmApplicationEnvironmentName>中的.csproj属性来设置环境。
以下示例将应用的环境设置为 Staging:
<WasmApplicationEnvironmentName>Staging</WasmApplicationEnvironmentName>
默认环境为:
-
Development(用于生成)。 -
Production(用于发布)。
内联的启动配置文件
Blazor的启动配置,在.NET 10发布之前存在于名为blazor.boot.json的文件中,现在已内联到dotnet.js脚本中。 这仅影响直接操作 blazor.boot.json 文件的开发者,例如:
- 按照 ASP.NET Core Blazor WebAssembly 的缓存与完整性检查失败指南,使用 PowerShell 脚本检查已发布资源的文件完整性。
- 在不使用默认 Webcil 文件格式时,根据托管和部署 ASP.NET Core Blazor WebAssembly 的指导,更改 DLL 文件的文件名扩展名。
目前,还没有为上述方法制定明确的替代策略。 如果需要上述任一策略,请使用任一文章底部的 “打开文档问题 ”链接来打开描述方案的新文档问题。
用于保存组件和服务状态的声明性模型
在以前的 Blazor 版本中,在使用 PersistentComponentState 服务预呈现期间保留组件状态涉及大量代码。 从 .NET 10 开始,可以使用 [PersistentState] 特性声明性地指定要从组件和服务中保留的状态。 有关详细信息,请参阅 .NET 10 中 ASP.NET Core 中的新增功能。
自定义 Blazor 缓存和 BlazorCacheBootResources MSBuild 属性已删除
现在,所有 Blazor 客户端文件都通过指纹识别和缓存由浏览器处理,Blazor 自定义缓存机制和 BlazorCacheBootResources MSBuild 属性不再可用。 如果客户端项目的项目文件包含 MSBuild 属性,请删除该属性,因为它不再有任何影响:
- <BlazorCacheBootResources>...</BlazorCacheBootResources>
有关详细信息,请参阅 ASP.NET 核心 Blazor WebAssembly 缓存和完整性检查失败。
在现有密钥中采用通行密钥用户身份验证 Blazor Web App
有关指南,请参阅 ASP.NET Core Blazor Web App中的实现密钥。
使用个人帐户禁用 Blazor Web App 导航错误时
本部分适用于Blazor Web App将 MSBuild 属性<BlazorDisableThrowNavigationException>设置为true的 s,以避免在静态服务器端呈现(静态 SSR)期间引发导航异常。
在IdentityRedirectManager方法中InvalidOperationException抛出一个RedirectTo方法,以确保该方法不是从交互式呈现模式调用的,并且所有重定向方法都标有该[DoesNotReturn]属性。 .NET 10 或更高版本 Blazor Web App 的项目模板将 <BlazorDisableThrowNavigationException> MSBuild 属性设置为 true 应用的项目文件中,以避免在静态 SSR 期间引发异常。 如果基于 .NET 早期版本中的项目模板的应用已更新到 .NET 10 或更高版本,并且包含 <BlazorDisableThrowNavigationException> 设置为 trueMSBuild 属性,则进行以下更改。 有关详细信息,请参阅 .NET 10 中 ASP.NET Core 中的新增功能。
在 Components/Account/IdentityRedirectManager.cs中:
InvalidOperationException从
RedirectTo方法中删除:- throw new InvalidOperationException( - $"{nameof(IdentityRedirectManager)} can only be used during static rendering.");从文件中删除属性的
[DoesNotReturn]五个实例:- [DoesNotReturn]
重大变化
使用 《.NET 中的重大变化》中的文章,以帮助您在将应用程序升级到 .NET 的较新版本时查找可能适用的重大变化。