Nous avons beaucoup parlé de .NET dernièrement , mis en place de nombreux projers d’exemple en .NET mais que se passe t-il lorsque nous souhaitons migrer du framework 5.0 vers le 6.0 ? Quels sont les étapes clés pour la réussite de ce processus ?
Je vais tenter de vous aiguiller pour que tout cela se passe sans douleur 😁
1-Migration des fichiers csproj
Il va falloir éditer « a la main » les fichiers projets comme suit :
// Old
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
// New
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
2-Mettra jour les packages NuGet
Vous pouvez soit le faire via le gestionnaire de packages en mode graphique ,soit via la modification du fichier csproj encore une fois:
// Old
<ItemGroup>
<PackageReference Include=”Microsoft.AspNetCore.Authentication.JwtBearer” Version=”5.0.11" />
<PackageReference Include=”Microsoft.AspNetCore.Identity.UI” Version=”5.0.11" />
<PackageReference Include=”Microsoft.AspNetCore.Mvc.Versioning” Version=”5.0.0" />
<PackageReference Include=”Microsoft.EntityFrameworkCore.Design” Version=”5.0.11">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include=”Swashbuckle.AspNetCore” Version=”5.6.3" />
</ItemGroup>
// New
<ItemGroup>
<PackageReference Include=”Microsoft.AspNetCore.Authentication.JwtBearer” Version=”6.0.0" />
<PackageReference Include=”Microsoft.AspNetCore.Identity.UI” Version=”6.0.0" />
<PackageReference Include=”Microsoft.AspNetCore.Mvc.Versioning” Version=”5.0.0" />
<PackageReference Include=”Microsoft.EntityFrameworkCore.Design” Version=”6.0.0">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include=”Swashbuckle.AspNetCore” Version=”6.2.3" />
</ItemGroup>
3- Mettre à jour les namespaces
La définition des namespaces a changé même si elle n’a pas d’impact c’est quand même mieux donc dans vos fichiers csharp (cs) , modifiez comme suit :
// Old
namespace MyApplication
{
public class User
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
}
}
// New
namespace MyApplication;
public class User
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
}
4- Migrer votre classe StartUp vers la classe Program
En effet en .NET 6.0, il n’y a plus qu’un fichier Program qui rassemble Program et StartUp.
Voici ce que vous avez dans le StartUp .NET 5.0 :
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace MyApplication
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler(“/Error”);
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
}
}
}
Et dans le Program.cs en .NET 5.0 :
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
namespace MyApplication
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
Et enfin le résultat en .NET 6.0 :
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler(“/Error”);
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
C’est quand même mieux non ? 😎
Normalement votre application devrait fonctionner comme auparavant et peut être même mieux au vu des améliorations de performance sur .NET 6.0.
Si besoin de plus d’informations , il existe un guide chez Microsoft qui vous aidera si vous avez des difficultés. Il est disponible ici.
Have fun coding !
Articles similaires