零度框架升级到 Aspire 13.0 版本

简化解决方案文件格式

从 sln 到 slnx,新的 slnx 格式更易于阅读和维护,减少了冗余信息,使得项目结构更加清晰。

dotnet sln migrate

同时修改 slnf 中引用的 sln 文件为 slnx 文件。

将项目目标框架升级到 .NET 10 版本

在项目文件中将目标框架从 net9.0 修改为 net10.0:

<TargetFramework>net10.0</TargetFramework>

将 Aspire 升级到 13.0.0 版本

在项目文件中将 Aspire 包的版本号更新为 13.0.0

- <Project Sdk="Microsoft.NET.Sdk">
+ <Project Sdk="Aspire.AppHost.Sdk/13.0.0">

-  <Sdk Name="Aspire.AppHost.Sdk" Version="9.5.2" />

  <PropertyGroup>
    <OutputType>Exe</OutputType>
-   <TargetFramework>net9.0</TargetFramework>
+   <TargetFramework>net10.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
-   <IsAspireHost>true</IsAspireHost>
    <UserSecretsId>0afc20a6-cd99-4bf7-aae1-1359b0d45189</UserSecretsId>
  </PropertyGroup>

  <ItemGroup>
-   <PackageReference Include="Aspire.Hosting.AppHost" Version="9.5.2" />
+   <!-- Aspire.Hosting.AppHost is now included automatically by the SDK -->
  </ItemGroup>

</Project>

将中央包 Directory.Packages.props 中的包更到最新

列出所有需要更新的包

dotnet list package --outdated

将 Swagger 升级到 Microsoft.AspNetCore.OpenApi 版本

之前的技术技术是,使用 Swashbuckle.AspNetCore 来生成 JSON 格式的 OpenAPI 文档。然后使用 Swagger UI 来提供交互式的 API 文档界面。

Swashbuckle.AspNetCore 包含了生成 OpenAPI 文档和提供 Swagger UI 的功能。

现在微软官方提供了 Microsoft.AspNetCore.OpenApi 包来生成 OpenAPI 文档,并且与 ASP.NET Core 框架紧密集成, UI 则可以使用其他工具来实现,比如 Redoc 或者自定义的前端,也可继续使用 Swagger UI 作为前端展示。

测试可见性

移除以下代码段:

public partial class Program { }

将 MAUI 集成 到 Aspire 项目中

在项目文件中添加以下内容以启用 MAUI 支持:

var mauiapp = builder.AddMauiProject("hybridapp", "../HelloWorld.HybridApp/HelloWorld.HybridApp.csproj");

mauiapp.AddWindowsDevice().WithReference(apiService).WaitFor(apiService);
mauiapp.AddMacCatalystDevice().WithReference(apiService).WaitFor(apiService);
mauiapp.AddiOSSimulator().WithReference(apiService).WaitFor(apiService);
mauiapp.AddAndroidEmulator().WithReference(apiService).WaitFor(apiService);

修改一些中断性更改

  • Aspire.Hosting.AppHost 包移除,因为它现在由 SDK 自动包含。
  • 检查并更新任何使用了已弃用 API 的代码,参考 Aspire 13.0 的发布说明进行修改。
  • 测试应用程序以确保所有功能正常工作,并解决任何由于升级引起的问题。