この記事では、.NET 8 の ASP.NET Core を .NET 9 の ASP.NET Core に更新する方法について説明します。
[前提条件]
ASP.NET および Web 開発ワークロードを含む Visual Studio 2022。
global.json で .NET SDK のバージョンを更新する
特定の .NET SDK バージョンを対象とする global.json ファイルに依存している場合は、 version プロパティをインストールされている .NET 9 SDK バージョンに更新します。 例えば次が挙げられます。
{
"sdk": {
- "version": "8.0.100"
+ "version": "9.0.100"
}
}
ターゲット フレームワークを更新する
プロジェクト ファイルのターゲット フレームワーク モニカー (TFM) を net9.0 に更新します。
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
- <TargetFramework>net8.0</TargetFramework>
+ <TargetFramework>net9.0</TargetFramework>
</PropertyGroup>
</Project>
パッケージ参照の更新
プロジェクト ファイルで、各 Microsoft.AspNetCore.*、Microsoft.EntityFrameworkCore.*、Microsoft.Extensions.*、System.Net.Http.Json パッケージ参照の Version 属性を 9.0.0 以降に更新します。 例えば次が挙げられます。
<ItemGroup>
- <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="8.0.2" />
- <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="8.0.2" />
- <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="8.0.0" />
- <PackageReference Include="System.Net.Http.Json" Version="8.0.0" />
+ <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" />
</ItemGroup>
UseStaticFiles を MapStaticAssets に置き換えます。
UseStaticFilesをアプリのMapStaticAssets ファイル内のProgramに置き換えることで、Web アプリ内の静的ファイルの処理を最適化します。
- app.UseStaticFiles();
+ app.MapStaticAssets();
MVC &Razor Pages アプリでは、.WithStaticAssets後またはMapRazorPagesでMapControllerRouteした後、Program.csへの呼び出しをチェーンする必要があります。 例については、ASP.NET Core の Static ファイルを参照してください。
ASP.NET Core では、ビルド時と発行時に静的ファイルのフィンガープリントとプリ圧縮が自動的に行われ、適切なキャッシュ ヘッダーでエンドポイント ルーティングを使用して、最適化されたファイルがエンドポイントとして表示 MapStaticAssets 。
アプリからフィンガープリントされたファイル名を解決するには:
Blazor アプリでは、ComponentBase.Assets プロパティを使用します。 Razorを使用するように、
.razorコンポーネント ファイル (@Assets["{ASSET PATH}"]) 内の静的資産への明示的な参照を更新します。ここで、{ASSET PATH}プレースホルダーは資産へのパスです。 これは、 フレームワーク スクリプト () に対して行う必要Blazor注意してください。 次の例では、Bootstrap、Blazor プロジェクト テンプレート アプリ スタイル シート (app.css)、および ( のアプリの名前空間に基づく)BlazorSampleはルート コンポーネント (通常はAppコンポーネント (Components/App.razor) にリンクされています。<link rel="stylesheet" href="@Assets["bootstrap/bootstrap.min.css"]" /> <link rel="stylesheet" href="@Assets["app.css"]" /> <link rel="stylesheet" href="@Assets["BlazorSample.styles.css"]" />MVC & Razor Pages アプリでは、スクリプトおよびリンク タグ ヘルパーによって、フィンガープリントされたファイル名が自動的に解決されます。
JavaScript モジュールをインポートするときにフィンガープリントされたファイル名を解決するには、生成された マップを追加します:
Blazor アプリで、(ImportMap) コンポーネントをアプリのルート コンポーネントの
<head>コンテンツ (通常はAppコンポーネント (App.razor) に追加します。<ImportMap />MVC Razor ページ アプリで、メイン レイアウト ファイルの先頭に
<script type="importmap"></script>を追加します。これは、マップ タグのインポート ヘルパーによって更新されます。
詳細については、次のリソースを参照してください。
Blazor
Blazor Web Appに簡単な認証状態のシリアル化を採用する
Blazor Web Apps では、必要に応じて、 単純な認証状態のシリアル化を採用できます。
サーバー プロジェクトで次の手順を実行します。
永続化認証状態プロバイダー (
PersistingAuthenticationStateProvider.cs) を削除します。Programファイルからサービス登録を削除します。 代わりに、AddAuthenticationStateSerializationでAddRazorComponentsする呼び出しをチェーンします。- builder.Services.AddScoped<AuthenticationStateProvider, PersistingAuthenticationStateProvider>(); builder.Services.AddRazorComponents() .AddInteractiveServerComponents() .AddInteractiveWebAssemblyComponents() + .AddAuthenticationStateSerialization();
この API はがシリアル化するのは、ブラウザーでのアクセス用のサーバー側の名前とロール要求だけです。 すべての要求を含めるには、 SerializeAllClaims を trueに設定します。
.AddAuthenticationStateSerialization(options => options.SerializeAllClaims = true);
クライアント プロジェクト (.Client):
永続的な認証状態プロバイダー (
PersistentAuthenticationStateProvider.cs) を削除します。Programファイルからサービス登録を削除します。 代わりに、サービス コレクションで AddAuthenticationStateDeserialization を呼び出します。- builder.Services.AddSingleton<AuthenticationStateProvider, PersistentAuthenticationStateProvider>(); + builder.Services.AddAuthenticationStateDeserialization();
詳細については、「 .NET 9 の ASP.NET Core の新機能」を参照してください。
ストリーミング レンダリング属性に true パラメーターが不要になった
.NET 8 では、ストリーミング レンダリングでは、true パラメーターのenabledを渡す必要がありました。
@attribute [StreamRendering(true)]
.NET 9 以降では、 true は必要に応じて削除できます。 true が enabled パラメーターの既定値になりました。
@attribute [StreamRendering]
重大な変更
.NET の破壊的変更に関する記事を使用して、アプリを新しいバージョンの .NET にアップグレードするときに適用される可能性のある破壊的変更を見つけます。
ASP.NET Core