Compartilhar via


Migrar do ASP.NET Core no .NET 8 para o ASP.NET Core no .NET 9

Este artigo explica como atualizar um ASP.NET Core no .NET 8 para o ASP.NET Core no .NET 9.

Pré-requisitos

Atualizar a versão do SDK do .NET Core em global.json

Se você depende de um arquivo global.json para o direcionamento a uma versão específica do SDK do .NET Core, atualize a propriedade version para a versão do SDK do .NET 9.0 instalada. Por exemplo:

{
  "sdk": {
-    "version": "8.0.100"
+    "version": "9.0.100"
  }
}

Atualizar a estrutura de destino

Atualize o TFM (Moniker da Estrutura de Destino) do arquivo de projeto para net9.0:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
-    <TargetFramework>net8.0</TargetFramework>
+    <TargetFramework>net9.0</TargetFramework>
  </PropertyGroup>

</Project>

Referências do pacote de atualização

No arquivo do projeto, atualize o atributo Version de cada referência de pacote Microsoft.AspNetCore.*, Microsoft.EntityFrameworkCore.*, Microsoft.Extensions.* e System.Net.Http.Json para 9.0.0 ou posterior. Por exemplo:

<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>

Substitua UseStaticFiles por MapStaticAssets

Otimize o tratamento de arquivos estáticos em seus aplicativos Web substituindo UseStaticFiles por MapStaticAssets no arquivo do Program aplicativo:

- app.UseStaticFiles();
+ app.MapStaticAssets();

Nos aplicativos MVC e Razor Pages, você também precisa encadear uma chamada para .WithStaticAssets depois MapRazorPages ou MapControllerRoute em Program.cs. Para obter um exemplo, consulte os arquivos estáticos no ASP.NET Core.

ASP.NET Core automaticamente imprime e pré-compacta seus arquivos estáticos no momento da compilação e publicação e, em seguida MapStaticAssets , exibe os arquivos otimizados como pontos de extremidade usando o roteamento de ponto de extremidade com cabeçalhos de cache apropriados.

Para resolver os nomes de arquivo com impressão digital do seu aplicativo:

  • Em Blazor aplicativos, use a ComponentBase.Assets propriedade. Atualize as referências explícitas a ativos estáticos em Razor arquivos de componente (.razor) para usar @Assets["{ASSET PATH}"], em que o espaço reservado {ASSET PATH} é o caminho para o ativo. Observe que isso NÃO deve ser feito para os scripts de Blazor estrutura (blazor.*.js). No exemplo a seguir, o Bootstrap, a folha de estilo do Blazor aplicativo de modelo de projeto (app.css) e a folha de estilo de isolamento CSS (com base no namespace de um aplicativo de BlazorSample) estão vinculados em um componente raiz, normalmente o App componente (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"]" />
    
  • Nos aplicativos MVC e Razor Pages, os auxiliares de script e tag de link resolverão automaticamente os nomes de arquivo com impressão digital.

Para resolver os nomes de arquivo com impressão digital ao importar módulos JavaScript, adicione um mapa de importação gerado:

  • Em Blazor aplicativos, adicione o componente (ImportMap) ao <head> conteúdo do componente raiz do aplicativo, normalmente no App componente (App.razor):

    <ImportMap />
    
  • Em aplicativos MVC e Razor páginas, adicione <script type="importmap"></script> ao cabeçalho do arquivo de layout principal, que é atualizado pelo Auxiliar de Marca de Mapa de Importação.

Para saber mais, consulte os recursos a seguir:

Blazor

Adote a serialização de estado de autenticação simplificada para Blazor Web Apps

Blazor Web AppOpcionalmente, o s pode adotar a serialização simplificada do estado de autenticação.

No projeto do servidor:

  • Remova o provedor de estado de autenticação persistente (PersistingAuthenticationStateProvider.cs).

  • Remova o registro de serviço do Program arquivo. Em vez disso, encadeie uma chamada para AddAuthenticationStateSerialization on AddRazorComponents:

    - builder.Services.AddScoped<AuthenticationStateProvider, PersistingAuthenticationStateProvider>();
    
      builder.Services.AddRazorComponents()
          .AddInteractiveServerComponents()
          .AddInteractiveWebAssemblyComponents()
    +     .AddAuthenticationStateSerialization();
    

A API só serializa as declarações de nome e função do lado do servidor para acesso no navegador. Para incluir todas as declarações, defina SerializeAllClaims como true:

.AddAuthenticationStateSerialization(options => options.SerializeAllClaims = true);

No projeto do cliente (.Client):

  • Remova o provedor de estado de autenticação persistente (PersistentAuthenticationStateProvider.cs).

  • Remova o registro de serviço do Program arquivo. Em vez disso, chame AddAuthenticationStateDeserialization a coleção de serviços:

    - builder.Services.AddSingleton<AuthenticationStateProvider, PersistentAuthenticationStateProvider>();
    + builder.Services.AddAuthenticationStateDeserialization();
    

Para obter mais informações, confira Novidades do ASP.NET Core 9.0.

Recursos adicionais