Lancement de Visual Studio 2017 aux Afterworks@Noumea du 15 Mars

Pour le lancement de Visual Studio 2017 et les 20 ans de l’outil de prédilection de tous les développeurs .NET, il aura bien fallut un évènement spécial des Afterworks@Noumea des communautés MS.

Après une présentation d’un peu plus d’une heure ponctuée de démos sur l’outil et sur les différentes fonctionnalités, .NET Core, l’architecture en microservice avec Docker et la mobilité, nous avons pu enfin goûter au gâteau d’anniversaire :

P1040523

Retrouvez les slides de la session ici : https://fr.slideshare.net/neodante/visual-studio-2017-launch-keynote-afterworksnoumea

Au niveau des ressources sur .NET, n’hésitez pas à me suivre sur LinkedIn (https://www.linkedin.com/in/jchable)

Encore un grand merci à la CCI de Nouméa pour le prêt des locaux et leur temps.

Bonne journée

Lancement de Visual Studio 2017 à Nouméa

MSFT_16257_VS17_1000x750_Sharethrough_thumb[4]Suite au lancement officiel du 07 Mars, nous organisons un évènement local ce mercredi 15/03 à la CCI de Nouméa. Au programme, une introduction aux nouvelles fonctionnalités de Visual Studio 2017 et à la plateforme .NET. Pendant cette présentation d’un peu plus d’une heure, ponctuées de pas mal de démonstrations, nous partagerons avec les participants sur les sujets suivants :

- Les nouveautés de Visual Studio 2017

- Quoi de neuf dans .NET et .NET Core ?

- Le développement mobile multiplateforme avec Xamarin

- Microservice, Docker et DevOps

Soyez préparer à manger un morceau du gâteau des 20 ans de Visual Studio !

Nous avons également quelques goodies à faire gagner pendant la session !

A demain soir !

MSFT_16257_VS17_STD_SpecialDelivery_FB_final3_DN-MININT-07V2IBM_thumb[3]

Visual Studio 2017 launch in Nouméa on 14th March 2017

MSFT_16257_VS17_1000x750_SharethroughFollowing the official launch on 07th March, we are organizing a local event wednesday evening at CCI in Nouméa to introduce the brand new features of Visual Studio 2017 and .NET. During this 1 hour+ presentation with a lot of demos, we’ll share with participants the following :

- Visual Studio 2017 what’s new inside ?

- Where are we with .NET and .NET Core ?

- Multiplateforme with Xamarin

- Microservice, Docker et DevOps

Be prepare to eat a piece of cake to celebrate the 20 years of Visual Studio and productivity !

We also have some goodies to win during the session !

See you !

MSFT_16257_VS17_STD_SpecialDelivery_FB_final3_DN-MININT-07V2IBM

SharePoint 2016 project templates missing on Visual Studio 2015

imageWhen you open Visual Studio 2015 (with Update 3) on a SharePoint 2016 developer machine, it may occurs that the SP 2016 templates are missing (it displays only SP 2010 and 2013 templates). In that case, don’t panic ! Just follow the following process :

  1. If you don't have a version of Office Developer Tools for Visual Studio 2015, download “Microsoft Office Developer Tools Preview 2 for Visual Studio 2015” with the following link : https://www.microsoft.com/en-us/download/details.aspx?id=51683  (don’t go to aka.ms/officedevtoolsforvs2015 , the link is broken)
  2. Install the Microsoft Office Developer Tools Preview 2 for Visual Studio 2015 on your machine
  3. Open Control Panel > Programs > Programs and Features
  4. Uninstall SharePoint Client Components (with the version number 16.0.xxx)
  5. Download the SharePoint Server 2016 Client Components SDK from www.microsoft.com/en-us/download/details.aspx?id=51679
  6. Start developing your successful SharePoint Addins !

Open XML SDK 2.7 for .NET Core release

For people who play a lot with Office documents, and as a SharePoint developer (app, migration tools, etc) this is a day as usual, the Open XML SDK is a powerful companion.

The latest update of this nice SDK was released a year ago with a great upgrade, thanks to Eric White which replaced the System.IO.Packaging implementation. Last week was released the official SDK 2.7 which now moved to using Windows Base and supports .NET Standard 1.3, so it now works with .NET Core and .NET CLI.

image

And you know what ?!? It works like a charm !

Here is a sample code to generate a Word Document from a .NET Core (as well as for any .NET app) :


using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;

namespace CoreTest
{
public class Program
{
public static void Main(string[] args)
{
GenerateHelloOOXMLDocument("test.docx");
}

public static void GenerateHelloOOXMLDocument(string docName)
{
using (WordprocessingDocument package =
WordprocessingDocument.Create(docName, WordprocessingDocumentType.Document))
{
package.AddMainDocumentPart();
package.MainDocumentPart.Document =
new Document(
new Body(
new Paragraph(
new Run(
new Text("Hello Open XML for .NET Core !")))));

package.MainDocumentPart.Document.Save();
}
}
}
}

and the project.json file :


{
"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true
},

"dependencies": {
"DocumentFormat.OpenXml": "3.0.0-*",
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.1"
}
},

"frameworks": {
"netcoreapp1.0": {
"imports": "dnxcore50"
}
}
}

Déployer un site ASP.NET Core dans un conteneur Nano Server

Avec l’arrivée de Windows Server 2016, les entreprises se voit maintenant dotées d’un nouveau type de conteneur : les conteneurs Windows (exécutant Windows Server Core et Nano Server). A l’instar des conteneurs Linux, les conteneurs Windows possèdent leurs propres images disponible sur le Docker Hub. L’agnosticité de Docker (peu importe le fournisseur ou la technologie sous-jacente) et les capacités multiplateforme de .NET Core vont nous permettre de migrer une application ASP.NET Core existante s’exécutant dans conteneur Linux (cf dernier post) vers Nano Server sous Windows Server 2016.

Migrer vers un conteneur Windows

Lors du dernier post sur le sujet, nous avions vu comment déployer une application ASP.NET MVC Core dans un conteneur Linux. Voici le Dockerfile (que j’ai nommé Dockerfile.nanoserver permettant d’avoir un Dockerfile par type de conteneur) permettant de déployer la même application dans un conteneur Windows :

FROM microsoft/dotnet:nanoserver
 
COPY . /app
WORKDIR /app
RUN ["dotnet", "restore"]
RUN ["dotnet", "build"]
 
EXPOSE 5000/tcp
ENTRYPOINT ["dotnet", "run", "--server.urls", http://*:5000]

Constat : la seule différence à ce fichier Dockerfile est l’image de base (microsoft/dotnet:nanoserver) qui spécifie que nous souhaitons utiliser l’image .NET Core sous Nano Server. C’est aussi simple que ça ! (pour une application .NET Core en tout cas).

En quelques étapes :

  • Exécuter la même commande de Build pour construire votre image : docker build –t <votre tag> –f Dockerfile.nanoserver .

image

  • Démarrer un conteneur avec la commande : docker run –d –p 5000:5000 <votre tag>
  • Ouvrez un navigateur web et naviguez vers votre conteneur : http://<ip de votre conteneur/serveur Windows Server 2016>:5000

Exécuter l’application dans un conteneur Hyper-V

Le conteneur Windows Hyper-V apporte une couche d’isolation et de sécurité supplémentaire à l’application. Le choix entre un conteneur Windows “simple” et un conteneur virtualisé Hyper-V se fera en fonction de vos besoins, ce dernier fournissant une isolation du kernel et une séparation entre le niveau/version des patchs de l’hôte et de l’application.

La ligne de commande est similaire, nous précisons simplement le niveau d’isolement :

  • Démarrer un conteneur avec la commande incluant le paramètres isolation : docker run –d –p 5000:5000 –isolation=hyperv <votre tag>
  • Ouvrez un navigateur web et naviguez vers votre conteneur : http://<ip de votre conteneur/serveur Windows Server 2016>:5000

Container everywhere !

L’introduction des conteneurs Windows avec l’arrivée de Windows Server 2016 annonce une adoption du conteneur encore plus importe que celle actuellement avec les conteneurs Linux : containarization d’applications anciennes ou déploiement d’applications IIS avec le .NET Framework (avec Windows Server Core), déploiement Apps/IIS/AD DS/Hyper-V/etc (avec Nano Server), etc. L’adage Docker “Build, Ship and Run any app, Everywhere” n’a jamais eu autant de sens !

Déployer un projet web ASP.NET Core 1.0 avec Docker sur Windows en 15 minutes

Venant tout juste de passer sous Windows 10 update November 2015 (prérequis pour Docker beta) et souhaitant tester la RC2 fraichement débarquée de .NET Core, je me suis dit qu’un petit post ne serait pas de trop pour prendre les (nouvelles) bonnes habitudes. Aussi voici comment faire court pour créer une application .NET Core :

Installation des prérequis

Pour créer un projet ASP.NET Core :

  • .NET Core SDK (en RC 2 lors de la rédaction de ce post) : https://go.microsoft.com/fwlink/?LinkID=798398
  • NodeJS et son gestionnaire de package NPM : https://nodejs.org
  • Docker pour Windows (si vous êtes sur Windows) ou Docker pour Mac (si vous êtes sur Mac) : https://beta.docker.com/ (l’utilisation de la Beta nécessite l’obtention d’une clef qui arrive au compte goutte en ce moment …). Vous devez également avoir une version de Windows 10 adéquate (avec Hyper-V installé … pourquoi ne l’auriez-vous pas installé d’ailleurs ?!?) et la mise à jour de Novembre 2015.

Création du projet ASP.NET Core

  1. Dans une invite de commande ou dans une console PowerShell :
    1. mkdir coreapp : création d’un répertoire racine pour le projet
    2. cd .\coreapp\
  2. Installation du générateur Yeoman ASP.NET pour créer une application ASP.NET Core (et non juste une application console avec la commande dotnet new)
    1. npm install –g yo : installation de Yeoman
    2. npm install –g generator-aspnet : installation du générateur ASP.NET Core de Yeoman
  3. Création du projet :
    1. yo aspnet : affiche un wizard pour créer un nouveau projet :
      image
  4. Dans le wizard :
    1. Sélectionnez Web Application > Boostrap
    2. Saisissez le nom de l’application
  5. Le générateur va se mettre au travail et récupérer pour vous toutes les dépendances du projet et les placer dans un répertoire du même nom que celui de votre projet.
  6. Nous avons un peu de modification à faire pour rendre notre application compatible avec Docker (et rendre accessible notre application  à l’extérieur du container).
    Ouvrez le fichier Program.cs dans votre éditeur préféré (Visual Studio Code ?)
    Modifiez le contenu pour avoir un contenu similaire à ce qui suit puis enregistrez vos modifications :

    using Microsoft.Extensions.Configuration;
    
    ...
    namespace AppCoreDocker
    {
     public class Program
     {
     public static void Main(string[] args)
     {
     var config = new ConfigurationBuilder()
     .AddEnvironmentVariables("")
     .Build();
     var url = config["ASPNETCORE_URLS"] ?? "http://*:5000";
     var env = config["ASPNETCORE_ENVIRONMENT"] ?? "Development";
     
     var host = new WebHostBuilder()
     .UseKestrel()
     .UseUrls(url)
     .UseEnvironment(env)
     .UseContentRoot(Directory.GetCurrentDirectory())
     .UseIISIntegration()
     .UseStartup&amp;lt;Startup&amp;gt;()
     .Build();
    
     host.Run();
     }
     }
    }
    

    Cette modification permet de spécifier à Kestrel d’écouter sur le port 5000 quel que soit l’adresse que nous lui fournissons (merci à Laurent qui m’a évité de perdre du temps). Vous remarquerez la nouveauté liée à la RC 2 de cette configuration.

  7. Une fois le projet générer, les étapes sont les mêmes que pour tout projet :
    1. cd <nom de votre projet>
    2. dotnet restore : restaure les packages Nuget de l’application
    3. dotnet build : compile le projet (se produira si vous faites un run également)
    4. dotnet ef database update : crée la base de données SQLite pour gérer l’authentification (démo uniquement)
    5. dotnet run : lance le serveur Kestrel sur l’URL http://localhost:5000

image

Ouvrez un navigateur web avec l'URL : http://localhost:5000

image

Déploiement avec Docker

Afin de pouvoir lancer votre application dans un container Docker, nous devons créé notre Dickerfile. Le générateur Yeoman vous a déjà généré ce fichier, néanmoins, pour le moment le template de Yeoman n'est pas à jour (notamment l’image de base qui n’est pas la bonne et les actions maintenant avec la commande dotnet au lieu de dnx - cela a été mis à jour dans Github mais pas dans les distributions npm lors de la rédaction de ce post) que vous devrez modifier afin d’avoir un Dockerfile similaire à :

FROM microsoft/dotnet

ENV ASPNETCORE_ENVIRONMENT= "Production"

COPY . /app
 WORKDIR /app
 RUN ["dotnet", "restore"]

EXPOSE 5000
ENTRYPOINT ["dotnet", "run"]

Une fois le fichier modifié, vous pouvez exécuter les commandes suivantes :

  1. docker build –t <votre tag> .
  2. docker run –d –p 5000:5000 <votre tag>

La première commande build crée l'image Docker en installant les dépendances. La commande run exécute un container avec l'image créée précédemment sur le port 5000.

Ouvrez un navigateur web avec l'URL suivante : http://docker:5000 (et non localhost)

image

 

Conclusion

Force est de constater que l’uniformisation de la chaîne de commandes .NET Core et la possibilité de réaliser ses containers Docker dans un environnement Windows (ou Mac) apporte un réel gain de temps et une uniformité des outils quelle que soit l'environnement de développement.

Néanmoins, je ne pourrais que trop vous conseiller de tester vos containers dans un environnement Docker Linux stable et ne pas oublier que pour le moment Docker for Windows est en Beta.

Microsoft Most Valuable Professional again … 10 ans !

image

C’est toujours avec beaucoup de plaisir que l’on reçoit le mail de renouvellement de notre titre MVP (Most Valuable Professional) de la part de Microsoft (merci Soyoung !). C’est donc pour la 10ème année consécutive que je suis renouvelé et reste donc dans la famille des 285 MVPs spécialistes SharePoint / Office 365 présents aux quatre coins du globe.

Ce renouvellement se fait selon la nouvelle catégorisation MVP (anciennement SharePoint Server) : Office Servers and Services (qui regroupe SharePoint et Office 365) et Visual Studio and Development Technologies pour moi cette année.

Plus d’infos sur le titre MVP : https://mvp.microsoft.com/fr-fr/Overview

A bientôt sur les prochains Afterworks autour d’une SharePint !

Découvrir Nano Server avec Azure

Vous souhaitez tester ou découvrir Nano Server ? Vous disposez d’un compte Azure ? Oui, alors vous n’avez plus d’excuse, cela ne devrait pas vous prendre plus de 5 minutes.

1. Connectez-vous sur le portail d’administration Azure (http://portal.azure.com)

2. Effectuer une recherche ‘Nano server’ dans les services Azure et vous devriez avoir un résultat similaire à celui-ci :

image

3. Cliquez dessus et en bas de page, cliquez sur Créer (mode classique ou Resource Manager, ce dernier étant à privilégier pour les nouvelles ressources)

image

image

4. Configurer la machine avec vos paramètres spécifiques. Pour une démonstration j’ai opté pour la tarification A0 De base ou Standard (cliquez sur Afficher tout en haut à droite si le mode de tarification n’est pas affiché). Evidemment, à dimensionner en fonction de vos besoins.

5. Une fois la machine virtuelle créée (ce qui ne devrait pas être long) et afin de pouvoir déployer un site ASP.NET (Core ou 4.5), vous devez ajouter un point de terminaison pour le port 80 (port privé 5004 dans mon cas) :

image

6. Il ne vous reste plus qu’à vous connecter à votre nouveau Nano Server via une session distante PowerShell (cf. ce post pour l’utilisation de New-PSSession).

SharePoint 2016 en version finale (RTM)

Ce jour marque l’annonce de la version finale (RTM – Release To Manufacturing) de SharePoint Server 2016 et de Project Server 2016. Cette version que l’on attendait bien évidemment pour ses nombreuses améliorations aussi bien pour les utilisateurs que les IT devrait donc être disponible très bientôt (surveillance sur MSDN quotidienne dès demain !).

L’une des caractéristiques importantes de SP2016 est sa capacité d’hybride Cloud/On Premises que j’aurais le plaisir de tester dans les prochaines semaines afin d’agrémenter ce blog.

Sinon en quelques lignes pour rappel, SharePoint Server 2016 c’est aussi :

- Des limitations repoussées : des millions de documents par bibliothèque, un index de 500 millions d’éléments par serveur d’application de recherche, 100 000 collections de sites par bases de données (x20 par rapport à SP2013), des bases de contenu de plusieurs Tera (au lieu de 200 Go), des affichages de listes importantes moins contraignantes (> 5000 éléments), une taille de fichier max jusqu’à 10 Go, etc.

- Déploiement : installation de la ferme par rôle (MinRole), Patching avec 0 downtime (appliqer une mise à jour ou un fix ne fera plus tomber dramatiquement votre SLA), la création de collections de sites ultra rapide (1 seconde avec l’utilisation de modèle), DLP (Data Loss Protection) pour la sécurité des données, etc.

sharepoint-2016-minroles

- L’occasion de découvrir ou redécouvrir : OneDrive for Business, Office Graph et Delve dans SharePoint, des espaces de collaboration connectés à O365, le nouveau menu de lancement d’App (extensible …), SharePoint Insight pour mieux surveiller votre ferme, des transferts de fichiers optimaux avec BITS (fiabilité, économie bande passante, performance), les permaliens (le lien reste le même, que vous renommiez ou déplaciez votre document), etc.

- Une expérience “Mobile first” : HTML 5 et le Responsive sont partout dans SharePoint 2016 …

Vous connaissez déjà le programme du prochain Afterworks@Nouméa