Apprendre à migrer une application ASP.NET Core existante vers ASP.NET Core 2.0
Par Hinault Romaric

Le , par Hinault Romaric, Responsable .NET
ASP.NET Core 2.0, la dernière évolution majeure de la jeune plateforme de développement Web est disponible en version stable depuis une dizaine de jours. Dans ce billet de blog, je vais présenter les modifications qu'il faut apporter à une application ASP.NET Core 1.x pour profiter des fonctionnalités de cette nouvelle version.


Mise à jour de la version du Framework

Pour migrer votre application sous ASP.NET Core 1.x vers ASP.NET Core 2.0, la première chose à faire sera d’éditer le fichier .csproj et modifier la version du Framework qui est utilisée.

La section suivante :

Code xml : Sélectionner tout
1
2
3
<PropertyGroup> 
<TargetFramework>netcoreapp1.1</TargetFramework> 
</PropertyGroup>

Doit être modifiée en :

Code xml : Sélectionner tout
1
2
3
<PropertyGroup> 
<TargetFramework>netcoreapp2.0</TargetFramework> 
</PropertyGroup>

Si vous ciblez le Full Framework .NET dans votre projet, vous devez modifier sa version pour utiliser une version supérieure ou égale à 4.6.1. Il est référencé dans la section TargetFramework. Vous allez désormais avoir ceci :

Code xml : Sélectionner tout
<TargetFramework>net461</TargetFramework>

Si vous utilisez Visual Studio, vous pouvez simplement aller dans les propriétés du projet, et cliquer sur la zone déroulante « Target Framework », puis choisir .NET Core 2.0.


Mise à jour des packages

Une fois cela fait, vous devez faire passer tous les packages ASP.NET Core (Microsoft.AspNetCore.xxx) qui sont référencés dans votre projet vers les nouvelles versions de ceux-ci. Vous pouvez également modifier les packages pour EntityFramework Core vers la version 2.0 qui a été publiée au même moment.

Pour mon application dont les packages suivants sont référencés :

Code xml : Sélectionner tout
1
2
3
4
5
6
7
8
9
<ItemGroup> 
<PackageReference Include="BuildBundlerMinifier" Version="2.4.337" /> 
<PackageReference Include="Microsoft.AspNetCore" Version="1.0.4" /> 
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.0.3" /> 
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.0.2" /> 
<PackageReference Include="Microsoft.EntityFrameworkCore.SQLite" Version="1.0.*" /> 
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.0.*" /> 
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools.Dotnet" Version="1.0.0" /> 
</ItemGroup>

Je vais obtenir le résultat suivant après mise à jour :

Code xml : Sélectionner tout
1
2
3
4
5
6
7
8
9
<ItemGroup> 
<PackageReference Include="BuildBundlerMinifier" Version="2.4.337" /> 
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.0" /> 
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.0" /> 
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.0" /> 
<PackageReference Include="Microsoft.EntityFrameworkCore.SQLite" Version="2.0.0" /> 
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.0.0" /> 
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools.Dotnet" Version="2.0.0" /> 
</ItemGroup>

Vous pouvez migrer vos packages encore plus simplement, en remplaçant ceux-ci par une référence unique au metapackage Microsoft.AspNetCore.All comme suit :

Code xml : Sélectionner tout
1
2
3
4
  
<ItemGroup> 
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" /> 
</ItemGroup>

Il s’agit d’une nouveauté de ASP.NET Core 2.0. Vous trouverez plus de détails dans mon billet de blog découverte du metapackage Microsoft.AspNetCore.All.

Mise à jour des outils .NET Core

Dans le fichier .csproj, il pourrait également exister une section dans laquelle sont référencés les outils CLI .NET Core. Ils sont notamment utilisés pour la génération de code ou par EntityFramework pour la génération des bases de données.

Code xml : Sélectionner tout
1
2
3
4
<ItemGroup> 
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" /> 
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0" /> 
</ItemGroup>

Vous devez également les modifier pour cibler .NET Core 2.0 :

Code xml : Sélectionner tout
1
2
3
4
<ItemGroup> 
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" /> 
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" /> 
</ItemGroup>

Autres modifications

Le fichier Program.cs a été refactorisé dans ASP.NET Core 2.0. Pour éviter les potentiels problèmes que pourrait causer le code de la version avec ASP.NET Core 1.x, je vous recommande de modifier le code de votre classe Program pour utiliser celui proposé avec ASP.NET Core 2.0.

Vous devez donc éditer votre fichier Program.cs, et remplacer le code suivant :
Code c# : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  
  
public class Program 
{ 
public static void Main(string[] args) 
{ 
var host = new WebHostBuilder() 
.UseKestrel() 
.UseContentRoot(Directory.GetCurrentDirectory()) 
.UseIISIntegration() 
.UseStartup<Startup>() 
.Build(); 
  
host.Run(); 
} 
}

Par :

Code c# : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
public class Program 
{ 
public static void Main(string[] args) 
{ 
BuildWebHost(args).Run(); 
} 
  
public static IWebHost BuildWebHost(string[] args) => 
WebHost.CreateDefaultBuilder(args) 
.UseStartup<Startup>() 
.Build(); 
}


Si dans votre fichier .csproj, vous avez la section PackageTargetFallBack :

Code xml : Sélectionner tout
<PackageTargetFallback>portable-net45+win8</PackageTargetFallback>

Elle doit être renommée en AssertTargetFallback :

Code xml : Sélectionner tout
<AssetTargetFallback>portable-net45+win8</AssetTargetFallback>

Après toutes ces modifications, si vous exécutez votre application, elle devra désormais utiliser ASP.NET Core 2.0.


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :
Offres d'emploi IT
Architecte Sécurité H/F
Safran - Ile de France - Éragny (95610)
Développeur PHP / Stage H/F
SMILE - Provence Alpes Côte d'Azur - Lyon (69000)
CTO (Smart Farming)
APPLIFARM - Bretagne - Rennes (35000)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil