mercredi 29 mars 2017

ASP.NET MVC avec Visual Studio 2017

Je cherche à découvrir de façon pratique ce qu'est l'ASP.NET Core Runtime de Microsoft et pour cela il me faut installer Visual Studio 2017.

En cliquant dans Targeting .NET Platforms puis sur le lien ASP.NET Core Runtime j'espère obtenir les informations que je cherche ! A priori je trouve curieux cette présentation de .NET Core :

ASP.NET Core Runtime - Get Started with ASP.NET
ASP.NET existe depuis ASP.NET Framework 1.1 en 2003, aussi ça ne démarre pas aujourd'hui ! Je décide donc de cliquer sur le lien "Learn more" pour en lire un peu plus sur la différence entre ASP.NET et ASP.NET Core :

Différences entre ASP.NET et ASP.NET Core ?
Ben voilà ça saute maintenant aux yeux ! ASP.NET c'est que pour Windows tandis que ASP.NET Core c'est pour Windows Mac et même Linux !

Au passage on découvre une nouvelle version de Visual Studio : Visual Studio Code
qui est l'IDE Visual Studio pour Windows, Mac et Linux

En bas de la page :

ASP.NET Core lequel est le bon pour moi ?
Je clique sur ASP.NET Core Websites >

Et là on sent que l'on est enfin dans du sérieux, tout en Anglais bien sûr et l'on va pouvoir installer Visual Studio 2017 et .NET Core

Une dernière chose, en cliquant sur le lien sous ASP.NET Learn More
On découvre que pour cette version d'ASP.NET, c'est Visual Studio 2015 qui est proposé au téléchargement. La boucle est bouclée.

Une question que l'on peut légitimement se poser, c'est est-ce que Visual Studio 2015 sera l'IDE pour développer avec l'ancien framework jusqu'à la version 4.6.2 ... ? Et Visual Studio 2017 l'IDE pour développer avec ASP.NET Core ou bien on va tous devoir passer à ASP.NET Core ? Ou bien quoi ?

Have fun ! Et surtout n'oubliez pas ce n'est que du soft.

mardi 28 mars 2017

Visual Studio Community 2015 - ASP.NET WepAPI MVC vs MVC WebAPI

Quelle est la différence entre une Application MVC avec une possibilité de WebAPI et une Application Web API avec une possiblité de MVC ? A priori cela devrait être la même chose non ?

Je prends Visual Studio 2015 Community et je fais Fichier -> Nouveau -> Projet

Visual Studio 2015 -> Fichier -> Nouveau -> Projet
Je choisi le modèle de base : Application web ASP.NET du Framework 4.6.1 :

Ajouter une légende
Puis le modèle MVC mais je coche la case web api :

Application web ASP.NET MVC Web API
Et maintenant, je fais le contraire, en premier je choisie Web API de toutes les façons la case "MVC" est cochée :

Application web ASP.NET Web API MVC 
D'après vous, devrait-on obtenir le même résultats ? Et bien non, comparons les deux solutions.
D'abord les packages sont différents :

ASP.NET MVC WebAPI vs ASP.NET WebAPI MVC
Les packages suivants sont différents :
Microsoft.AspNet.WebApi.HelpPage.5.2.3
Microsoft.AspNet.WebApi.Owin.5.2.3
Microsoft.AspNet.WebApi.Owin.fr.5.2.3

Dans le second cas une area a été crée dans "Areas" :

Area Help dans le cas d'une Application Web Web API MVC
Laquelle de ces applications préférez-vous ?
Merci de me laisser votre commentaire.

lundi 27 mars 2017

Microsoft Visual Studio Community 2015 - Angular 2 - MVC 5

A priori, on peut faire du ASP.NET MVC 5 Angular 2 avec Visual Studio Community 2015 ... ? Vous n'êtes pas convaincu ? Alors suivez-moi. Il faut un peu de patience mais on y arrive.

ASP.NET MVC 5 Angular2
Voici la version de mon Visual Studio 2015 Community :
A propos de Microsoft Visual Studio
En cherchant dans les Templates en ligne, je trouve le template Angular2 Mvc5 sample application à installer :

Templates En ligne - Angular 2 MVC 5 sample application
En cliquant sur Informations vous trouvez : Sample Angular 2 RC1 and Mvc 5 application

On clique sur Ok, une Boite de dialogue apparaît :

Installer Angular Mvc5 sample application
En cliquant sur Installer, voici le projet que je retrouve dans mon Visual Studio :

Projet Visual Studio 2015 Community Angular 2 MVC 5
La fenêtre de sortie JS :


Java Scripts
Certains Java Scripts se sont pas enregistrés ? ... angular2 n'est pas enregistré ...

Structure du projet Angular2Mvc5Application1.csproj

Alors qu'est ce qu'il y a dans ce projet ? Comment va t-on le décortiquer que va t-on y trouver ? C'est incroyable toutes ces version d'ASP.NET MVC ça va tellement vite que l'on dirait qu'il faut attendre. A peine on commençait à travailler avec JQuery que c'est Angular JS qu'il aurait fallu installer, à peine on faisait du MVC 2 que 5 était sur le marché.

Et là encore, on est en train de se plonger dans ASP.NET MVC 5 - Angular2 - sous Visual Studo 2015 Community alors que l'on parle déjà de VS 2017 et ASP.NET Core ...

Références du projet

Qu'est ce qu'il y a dans les références de mon projet ? C'est toujours instructif de voir la part des DLL qui sont dans le Framework.NET et la part des DLL qui sont les packages.

Références du projet
Et la suite :

Références du projet -  Suite

En pointant sur Microsoft.AspNet.Identity.Core je peux voir que cette DLL est installée comme un package :

 ...\Angular2Mvc5Application1\packages\Microsoft.AspNet.Identity.Core.2.2.1\lib\net45\Microsoft.AspNet.Identity.Core.dll

Tandis que System.Security fais parti du Framework 4.5

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Security.dll

Les NuGets Packages du projet

En regardant dans le répertoire Packages, on trouve ceci :

ASP.NET MVC 5 - Angular2 - Packages
C'est impressionnant non ? Et franchement vous savez quoi ? Ça m'étonnerait que cela fonctionne tel quel. D'ailleurs je lance un petit coup de Build et ça crash en effet :

Génération du projet ça crash !
Il semble qu'Angular2 ne soit pas correctement installé ou même qu'un certain nombre de choses ne soient pas installées correctement ... Bref encore tout un patacaisse.

J'ai la curiosité d'ouvrir le fichier readme.md à l'intérieur des infos sur l'installation, essayons de corriger ce projet.

Correction de l'installation

Ce n'est pas gagné ! Des choses sont nouvelles Angular2 comment cela s'installe t-il ? Pourquoi cela n'a pas été fait avec l'installe du Template ?

Pour tenter de corriger cette erreur d'installation, je reviens sur la fenêtre de Sortie : Bower/npm où il m'a bien semblé voir des messages un peu curieux :

Ça n'est pas prêt de fonctionner tout ça, npm c'est le Nuget Package Management et Bower connais pas encore ! Je connaissais Jack Bower mais ça, c'était avant.

J'adore le message : You should bug the author to publish it 
Bien sûr ! C'est moi qui vais essayer de contacter l'auteur pour lui reporter ce bug, je n'ai que ça à faire.

Dans la suite du rapport, on peut lire :

npm ERR! 404 'angular/platform-browser' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it
npm ERR! 404 It was specified as a dependency of 'aspnet'
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, or http url, or git url.
npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\IDE\\Extensions\\Microsoft\\Web Tools\\External\\\\node\\node" "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\IDE\\Extensions\\Microsoft\\Web Tools\\External\\npm\\node_modules\\npm\\bin\\npm-cli.js" "install"
npm ERR! cwd D:\Mabyre\Visual Studio\Samples\ASP.NET MVC5\Angular2Mvc5Application2\Angular2Mvc5Application2
npm ERR! node -v v0.10.31
npm ERR! npm -v 1.4.9
npm ERR! code E404

Allons je vais voir ce qu'il y a dans mon système à l'endroit suivant :
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\External\node :

Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\External\node\ node.exe
En vérité, il n'y a pas grand chose ...

Certains trucs ne sont pas installés au niveau de Node.js ... Curieux, moi je pensais que Angular remplaçait JQuery et qu'on avait pas besoin de Node, c'est un vrai fatras.

Visual Studio 2015 et Angular2 MVC

Il semble bien que ce Template ne puisse pas fonctionner sur la plateforme actuelle, il faut sans doute faire un update pour installer ce qu'il faut au niveau d'Angular ou Node.js ou les deux. J'ai fais une tentative pour double-cliquer sur l'exe : node.exe, c'est une console :

Console node.exe
Allez lire un peu de stackoverflow : C'est quoi la différence entre Bower et npm ? Et vous comprendrez qu'une fois de plus ces histoires de dépendances foutent le wilde ! C'est un scandale, au lieu de facilité la vie du dev les nugets  sont ingérables.

Not fun at all !

Dans le fichier readme.md, je lis :

Synchronize Node.JS Install Version with Visual Studio 2015

Il me faut donc installer Node.JS, il s'installe dans :
C:\Program Files\nodejs\

Installeur de NodeJS pour Windows
Puis on me dit de Synchroniser Node.JS et Visual Studio 2015

Ok ok, ras le bol ! En plus c'est à la création que tout se passe donc je supprime tout avant de récréé le projet mais rien n'y fait.

Visual Studio Community 2015 - Angular 2 - MVC 5 - La solution est proche

Je m'acharne encore un peu. Dans Node.JS : C:\Program Files\nodejs
Je vois une commande "npm" en cherchant : 'angular' is not in the npm registry

Stackoverflow me dit : angular' is not in the npm registry d'exécuter la commande >npm install dans le répertoire de mon .csproj. Alors que c'est la réponse la moins "côtée" de la page c'est pourtant ce que je vais faire. Je vois dans le path le bon chemin, je me dis que je dois pouvoir exécuter la commande :

>npm install 

Depuis une console dans le répertoire de mon projet .csproj ...

Il va alors se passer un tout un tas de trucs :

>npm install dans le répertoire de mon projet
Je n'avais jamais vu une telle procédure d'installe depuis un moment, je ne sais pas ce que j'ai installé avec Node.JS, on dirait une sorte de cache ... il semble que se soit npm !

npm est le gestionnaire de paquets officiel de Node.JS ...

on vit les modules angular ... s'installer où ? dans le cache ...
Puis cela fini par se terminer ...
Ajouter une légende
Un petit coup de Build :

Génération réussi 1
Et voici le résultat, l'application TodoList Sample Application s'exécute :

Angular2Mvc5Application Template
L'application TodoList à base d'un Template Visual Studio 2015 MVC 5 et Angular 2 fonctionne enfin. Au passage on a vu comment installer Node.JS et Angular2.

L'aspect des "cases à cocher" est tout à fait surprenant, plutôt joli, ce comportement c'est probablement de l'Angular2.

Have Fun !

samedi 25 mars 2017

ASP.NET MVC5 RC vs ASP.NET MVC4

C'est quoi une application ASP.NET MVC5 RC1 ? J'aimerais savoir car pour l'instant, je n'en avais encore jamais instancié une ... Je vais en créer une et voir ce qu'il y a dedans quels sont les différents éléments que l'on me propose quelles sont les versions des briques de base.

Je suis avec Visual Studio 2015 Community, je fais Fichier -> Nouveau -> Projet

Visual Sutiod 2015 Community -> fichier -> Nouveau -> Projet
La boite de dialogue Nouveau projet apparaît :

Framework 4.6.1 - Visual C# Web
Un seul modèle de template ... Que je nomme WebApplication MVC5 RC1. Je clique sur Ok.

Je commence par choisir MVC pour lire le texte associé à droite, c'est du MVC 4 :

Framework 4.6.1 - Visual C# Web - MVC 4
Créer des applications à l'aide de l'architecture Model-View-Controller ... piloté par les tests ... utilisant les dernières normes.

Tout cela est prometteur mais je souhaite regarder ce qu'il y a dans ASP.NET 5 RC je vais donc créer un projet de ce type :

Framework 4.6.1 - Visual C# Web - Get ASP.NET 5 RC
Curieusement le texte est cette fois en anglais "To get started with ASP.NET 5 projects install the ASP.NET 5 runtime and tools". Je suis un peu inquiet ça n'a pas l'air sec !

En plus le truc me propose d'installer ASP.NET 5 runtime and tools, je regarde dans :


Je me dis que ces applications sont compilées avec Roslyn.

Comment s'y retrouver dans tout ça ? J'ai envie de tirer tout cela au clair au moins entre ASP.NET MVC 4.6.1 et ASP.NET 5 RC.

Oh le truc bien pourri, j'ai donc choisi un projet du type Get ASP.NET 5 RC mais quand je clique sur le bouton Ok on me propose de Télécharger DotNetCore.1.0.1-VS2015Tools.Preview2.0.3 et d'installer moi même le DotNetCore.

Visual Studio 2015  Télécharger le DotNetCore.1.0.1 Preview 2.0.3
Avec tout ce que j'ai entendu ou plutôt j'ai lu sur la cohabitation entre .NET Core et les frameworks précédents. Je crois que je vais prendre un peu de distance. Et par exemple, aller à la plage ...

Have fun ! N'oubliez pas, ce n'est que du soft.

vendredi 24 mars 2017

Correspondance des versions d'ASP.NET MVC avec celles de Visual Studio

Comment va t-on faire pour garder toutes ces versions compatibles, j'ai nommé ASP.NET MVC 4, MVC 5 Framework.NET 4.5.2, 4.6, 4.6.1, etc ... et surtout s'y retrouver ?

Quels sont les types d'applications que l'on peut développer avec une version de visual studio par exemple Visual Studio 2013, Visual Studio 2013 Update 5, Visual Studio 2015 et maintenant 2017, etc etc etc ...

Prenons notes avant de franchir le pas et d'utiliser un peu plus Visual Studio 2015 ou Visual Studio 2017 qui  vient de sortir. Je reprends mon bon vieux Visual Studio 2013 Professional Edition with Update 4, ce qu'ils appelaient à l'époque Microsoft Team Explorer pour Visual Studio 2013 !

Et je regarde dans ce que je peux faire avec :

Fichier -> Nouveau projet
Fichier -> Nouveau site web
Visual Studio 2013 quel projet  pour ASP.NET MVC ?
On se rappelle alors comment transformer un "Site web" en "Application web"

Et donc on fait :

Fichier -> Nouveau projet 

Et c'est en jouant avec toutes les possibilités de création d'un nouveau projet que l'on se rend compte du marasme dans lequel on est avec toutes ces versions d'ASP.NET. Et la question est : Comment maintenir d'anciennes application ASP.NET ?

Nouveau Projet web .NET 2.0, 3.0, 4, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1
Vous ne trouvez pas que c'est un peu exagéré, et d’ailleurs si on clique sur <Autres Frameworks...> ils se passe quoi ?

Visual Studio affiche une page Web : Targeting .NET Platforms

Target .NET Plateforms - Correspondances entre .NET et Visual Studio
Et sur la page suivante, ça continue :

Correspondance entre .NET et Visual Studio
Franchement, c'est pas un peu abuser ! Dommage il n'y a pas de dates ! On est devant l'historique complet de toutes les versions du .NET Framework on a un peu le vertige et cela donne une idée de l'infini.

En plus, il manque encore quelque chose, il faut quelle version de Visual Studio pour travailler avec tout ça tout le monde n'a pas VS 2017 !

Par curiosité, je clique sur le lien .NET Framework 2.0 + 3.5 SP1

.NET Framework 3.5 et Visual Studio 2008 ou 2010
Et le Framework 1.1 ? Il n'est plus là ? Heureusement ! lol mdr ptdr ... fou rire, je vais respirer un peu ...

Développer avec Visual Studio 2013

Alors qu'est ce que je peux encore faire avec mon bon vieux Visual Studio 2013 ? Je suis sûr que certains d'entre vous pensent : le mettre à la poubelle ! Oui mais avant, tirons en toutes les informations nécessaires de cette versions professionnelle.

Une chose est un peu curieuse avec VS 2013 c'est cet item Visual Studio 2012 ?
Visual Studio 2013 - Développer pour VS 2012 ?

En choisissant le Framework 4.0, je vois ASP.NET MVC 4, pouwarrgg !
En choisissant le Framework 4.5.2 MVC 4 disparaît :

Visual Studio 2013 compatibilité avec Visual Studio 2012
On comprendra que Visual Studio 2013 permet de conserver une certaine compatibilité avec Visual Studio 2012 ! Bref c'est vrai, c'est moi maintenant qui ais envie de jeter tout ça à la poubelle !

Un jour je vous montrerais comment j'ai adapté une ancienne application .ASPX en Application Web compatible 4.5 en créant automatiquement les fichiers .designer.cs ...

Au plus avec VS 2013, je choisi .NET Framework 4.6.1 et je peux développer une Application Web ASP.NET :
Visual Studio 2013 Framework 4.6.1
Et l'on voit iOS ? Oulala ben alors :

Visual Studio 2013 - Développement pour iOS
Je ne vous conseille pas de démarrer vos développements pour iOS avec ça ! Sinon vous allez vers quelques déconvenues ;)

I'll be back !

Mise à jour le 18 mai 2017

J'avoue, j'ai des soucis pour choisir une plateforme ASP.NET MVC JS stable ... je reviens donc sur cette page pour comprendre les différences entre les versions et v'là ti pas que je trouve un nouvel Item :

.NET Framework 4.7

Dans la page .NET Targeting un nouvel Item est apparu :

Dot NET Targeting apparition du .NET Framework 4.7
En attendant moi je regarde dans : C:\Windows\Microsoft.NET\Framework et on dirait bien que j'ai jamais dépassé le Framework v4.0.30319

C:\Windows\Microsoft.NET\Framework\v4.0.30319
Ce n'est pas fun du tout du tout encore ça !