Migration d'application MVC 3 en MVC 4

Avec Visual Studio 2010 SP1 Rel, j'ai installé MVC 3 puis MVC 4 mais Visual Studio ne me propose pas de créer des application MVC 3. Qu'à cela ne tienne, je me propose d'étudier la migration d'application MVC 3 vers MVC 4.

Je viens de télécharger une application du CodePlex :
http://advsampleapp.codeplex.com/
Sample app for Adventureworks database

Et il se trouve qu'à la page suivante :
http://www.mztools.com/Articles/2008/MZ2008017.aspx
On me dit que c'est une application MVC 3.

Lorsque je charge cette solution dans mon Visual Studio, j'obtiens l'erreur suivante :

AdventureWorks.Web.csproj is not supported by this installation
C'est assez curieux car je pensais que VS me proposerait de traduire cette application de MVC 3 vers MVC 4 mais il n'en est rien. Puis-je le faire à la main ?

Je regarde la ligne d'une application MVC 4 standard :
<ProjectTypeGuids>{E3E379DF-F4C6-4180-9B81-6769533ABE47};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>

Et je copie cette ligne directement dans le fichier :
\\advsampleapp-15464\Adventureworks\Adventureworks.Web\Adventureworks.Web.csproj

Que se passe t-il ?

Adventureworks.Web.csproj - Reload Project
J'obtiens un résultat encourageant :

Adventureworks.Web.csproj - Install de ASP.NET Web pages with Razor syntax 1.0
Le Web Platform Installer me propose d'installer Razor 1.0 ... Ce que je ne fais pas. Je reload simplement mon projet mais au moment de builder l'application, j'obtiens une "Erreur non spécifiée". Par expérience je me doute qu'il s'agit des "Services Références". Au moment de faire un Update des Services Référence :



J'obtiens l'erreur suivante :

Service Reference is invalid
Mais une fois mon service reference "PurchasingService" reconstruit l'application ne compile toujours pas. Je décide d'installer ce qui était préconiser le :

Web Platform Installer : Visual Studio 2010 SP1 Tool pour ASP.NET WebPages 1.0
En cliquant sur "Installer" :

Version de NuGet installés incompatible avec ASP.NET MVC 3 Tools Update
Consultez le lien :

En consultant ce lien, on tombe sur un Getting Started with MVC. On y verra également un getting started with MVC 5. Ce n'est pas très cool !

Conclusion MVC 3 vers MVC 4

La migration d'application MVC 3 en MVC 4 ce n'est pas gagné !

Pour aller plus loin :
Donc la version de Razor utilisée pour MVC 3 est 1.0 tandis que MVC 4 utilise Razor 2.0

Références du projet AdventureWorks Sample
DLLs qui utilisent ASP.NET Web Pages\v2.0 :
System.Web.Helpers.dll
System.Web.WebPages.dll

Et si on les fait pointer ces références vers la version v1.0 que se passe t-il ?

L'application Build mais à l'exécution en mode DEBUG :

Windows authentication is not enabled
Mais cela c'est du classique, il s'agit de la gestion des droits d'accès au répertoire virtuel, aux BD ASPNETDB et AdventureWorks, de chaines de connexion dans le Web.config ...

Outil de traduction automatique MVC3 vers MVC4

Et sinon vous avez un outils NuGet qui traduit automatiquement une solution MVC3 en MVC4 :

Auto Upgrade MVC 3 To MVC 4 1.0.1

Mais il était important de découvrir ce que cet outil doit faire pour traduire une solution.



ASP.NET MVC 3 - MVC 4

Dans un post précédent ASP.NET MVC, j'avais regarder de loin l'installation du framework asp.net mvc, le développement d'application avec razor ou webform. Je vais faire un refocusing sur le développement ASP.NET MVC et je m'arrêterai à MVC 3 ou MVC 4 ou les deux, pour simplifier ;)

ASP.NET MVC 3 Installation

Une fois Visual Studio installé et une version de SQL Server, l'installation du framework MVC 3 commence ici : ASP.NET MVC 3
ASP.NET MVC 3 Tools Update - Installation en Anglais
Curieusement si vous choisissez la langue Française le titre change pour l'appellation : ASP.NET MVC 3 RTM Tools Update, et je n'ai pas trop d'explications quant aux "RTM" ...

Encore une chose peu orthodoxe, si vous cliquez sur le bouton Download vous obtenez un choix :

ASP.NET MV 3 Tools Update Choices
 Ce qui donne en français :

ASP.NET MVC 3 Tools Update Choices in French
C'est un peu déroutant, on télécharge donc les trois fichier puis on va cliquer sur AspNetMVC3ToolsUpdateSetup.exe en premier, puis sur AspNetMVC3ToolsUpdateVS11Setup.exe.

Microsoft ASP.NET MVC 3 - 1
Poursuite de l'installation :

Microsoft ASP.NET MVC 3 - 2
Cette installation crée le répertoire : C:\Program Files\Microsoft ASP.NET et l’arborescence de fichiers suivante :

ASP.NET MVC 3 - Fichiers d'installation
C'est encore bien déroutant non ? On parlais de MVC 3 et l'on se retrouve avec un répertoire nommé MVC 4 pourtant MVC 4 existe bien séparément sous l'appellation ASP.NET MVC 4 pour Visual Studio 2010 SP1 et Visual Web Developer 2010 SP1.

En comparant les System Requirements des deux versions :

MVC 3

Supported Operating System
Windows 7, Windows Server 2003, Windows Server 2008, Windows Server 2008 R2, Windows Vista, Windows XP
.NET 4, ASP.NET 4, Visual Studio 2010 or Visual Web Developer 2010 are required to use certain parts of this feature.

MVC 4

Système d'exploitation pris en charge
Windows 7; Windows Server 2003 R2 (32-Bit x86); Windows Server 2003 R2 x64 editions; Windows Server 2003 Service Pack 2; Windows Server 2008; Windows Server 2008 R2; Windows Vista Service Pack 2; Windows XP Service Pack 3
PowerShell 2.0, .NET 4, ASP.NET 4 et Visual Studio 2010 SP1 ou Visual Web Developer 2010 SP1 sont requis pour pouvoir utiliser cette fonctionnalité.

On dirait que MVC 4 est une amélioration de MVC 3 pour VS 2010 SP1 ... Et ce n'est pas logique comme d'hab avec microsoft on pourrait nommer MVC 4 : MVC 3 SP1 ou SP3 ...

ASP.NET MVC 4 Installation

Une fois MVC 3 installé et bien continuons Ici.

ASP.NET MVC 4 Download
En suite après avoir pris soin de "débloquer" AspNetMVC4Setup.exe :

ASP.NET MVC 4 Install
ASP.NET MVC 4 Install - Successful