Voir le flux RSS

Hinault Romaric

[Actualité] Migrer une application ASP.NET Core existante vers ASP.NET Core 2.0

Noter ce billet
par , 26/08/2017 à 14h16 (616 Affichages)
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 - Visualiser dans une fenêtre à part
1
2
3
<PropertyGroup>
<TargetFramework>netcoreapp1.1</TargetFramework>
</PropertyGroup>

Doit être modifiée en :

Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
<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.

Nom : image.png
Affichages : 938
Taille : 8,4 Ko

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 - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
<PackageTargetFallback>portable-net45+win8</PackageTargetFallback>

Elle doit être renommée en AssertTargetFallback :

Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
<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.

Envoyer le billet « Migrer une application ASP.NET Core existante vers ASP.NET Core 2.0 » dans le blog Viadeo Envoyer le billet « Migrer une application ASP.NET Core existante vers ASP.NET Core 2.0 » dans le blog Twitter Envoyer le billet « Migrer une application ASP.NET Core existante vers ASP.NET Core 2.0 » dans le blog Google Envoyer le billet « Migrer une application ASP.NET Core existante vers ASP.NET Core 2.0 » dans le blog Facebook Envoyer le billet « Migrer une application ASP.NET Core existante vers ASP.NET Core 2.0 » dans le blog Digg Envoyer le billet « Migrer une application ASP.NET Core existante vers ASP.NET Core 2.0 » dans le blog Delicious Envoyer le billet « Migrer une application ASP.NET Core existante vers ASP.NET Core 2.0 » dans le blog MySpace Envoyer le billet « Migrer une application ASP.NET Core existante vers ASP.NET Core 2.0 » dans le blog Yahoo

Mis à jour 26/08/2017 à 19h45 par Malick

Catégories
DotNET , C# , ASP.NET , .NET Core , ASP.NET Core

Commentaires