以前の記事で.NET 8.0 でプロジェクト全体を作成しましたが、.NET 9.0 の Aspire の方が機能が充実しており使いやすいため、アップデートを行います。
Aspire のアップデート分のみ紹介します。 Blazor や API のアップデートは本記事では紹介しません。
Aspire.AppHost のアップデート
AppHost にインストールされているAspire.Hosting.AppHost
パッケージのバージョンを上げます。
AppHost プロジェクト直下で下記コマンドを実行してください。
dotnet add package Aspire.Hosting.AppHost --version 9.1.0
それか csproj ファイルを直接書き換えた後にdotnet restore
を実行でも大丈夫です。
SDK の登録
ただパッケージをアップデートしただけでは、ビルド時に下記エラーが発生します。
error ASPIRE006: DotnetDemo.AppHost project requires a reference to "Aspire.AppHost.Sdk" with version "9.0.0" or greater to work correctly. Please add the following line after the Project declaration `<Sdk Name="Aspire.AppHost.Sdk" Version="9.0.0" />`.
そのため、AppHost の.csproj ファイルに下記を追加します。
<Sdk Name="Aspire.AppHost.Sdk" Version="9.1.0" />
.NET 8.0 で作成した記事の内容が動かなくなる問題
Aspire のバージョンを.NET 9.0 に上げたところ、以前紹介した内容が動かなくなりました。これを修正します。
var migrations = builder.AddProject<Projects.DotnetDemo_MigrationService>("migrations")
- .WithReference(dotnetDemoDb)
+ .WithReference(dotnetDemoDb);
+ .WaitFor(dotnetDemoDb);
.NET 9.0 では新しくWaitFor()
メソッドが追加されました。もともとはリソースの作成順番は.NET 側でいい感じに依存関係を解析してくれていましたが、それを手動で設定できるようになりました。
具体的には、DB が生成されるまで API サーバは起動しないということが可能です。もともと未指定だったマイグレーションサービスの依存関係を明示することで正常に動くようになりました。
まとめ
.NET 9.0 の Aspire へのアップデートでは以下の点に注意が必要です:
- パッケージのアップデート
- SDK の明示的な追加
- 依存関係の明示(
WaitFor()
メソッドの使用)
これらの対応により、より安定した Aspire アプリケーションを構築できるようになります。
この記事が皆様のコーディングライフの助けになれば幸いです。
参考