Licence Metinet - IUT LYON 1
Concepteur et Gestionnaire de Sites Internet

 

Auteur: Christian ALLEMAND

Contenu

Cours

1 - Présentation de Visual Studio 2010

1.1 - Historique des versions de Visual Studio

1.2 - Architecture d’un projet et d’une solution

1.2.1 – Définition et contenu d’un Projet

1.2.2 – Définition et contenu d’une Solution

1.2.3 - Modèles de projets

1.2.4 – Modèles d’éléments

TP

1.3 - L’interface de Visual Studio

1.3.1 - Menus et fenetres d’affichage

1.4 - Les outils du SDK

1.5 - Création de la 1ere application console

1.5.1 - Compilation d’un projet en ligne de commande : méthode CRO MAGNON !

1.5.2 - Compilation d’un projet en ligne avec Visual Studio 2010

 

 

Cours

1 - Présentation de Visual Studio 2010

Pour mettre en pratique les éléments du Framework que nous allons étudier, nous utiliserons la plateforme Visual Studio.

Visual Studio n’est pas du tout obligatoire pour développer une application en .NET car on peut tout faire en ligne de commande, mais les fonctionnalités offertes par cet environnement de développement le rendent quasiment indispensable si on veut développer de façon rapide et efficace et dans un contexte d’équipe de développement.

 

Visual Studio 2010 est un IDE (Integrated Development Environment) Environnement de développement intégré) permettant de développer des applications ou librairies dans différents langages.

De base, il fournit les compilateurs pour les langages VB, C#, C++ et F#

Des extensions peuvent lui être ajoutées permettant d’accéder à d’autres langages tels que COBOL (Hitachi ou Fujitsu), IronRuby (Microsoft), PHP (jcx.software), …

Tous les langages pouvant être ajoutés en tant que plug-in dans Visual Studio ne gèrent pas forcément le .Net Framework.

1.1 - Historique des versions de Visual Studio

1998      Visual studio 6

                Passage de 6 services packs en attendant la sortie de la 1ere version .NET

2002      Visual Studio .NET (n° version interne : 7.0)

                Enormes modifications pour intégration 1ere version du Framework v1.0

Programmation orientée objet

Introduction du langage C#

2003      Visual Studio .NET 2003 (n° version interne : 7.1)

                Pas d’évolutions majeures

2005      Visual Studio 2005 (n° version interne : 8.0)

                Révision majeure

                Nouvelle version du Framework v2.0 (avec nombreuses améliorations et optimisations)

Passage de l’ASP.NET en version 2.0

Support du 64 bit…

2005      Visual studio Express : version gratuite

                Cette version ne comporte pas l’intégralité des langages.

Chaque langage fait l’objet d’un produit séparé (VB, C#, C++, J#, Web developer, SQL server)

2007      Visual studio 2008 (n° version interne : 9.0)

Révision majeure

                Nouvelle version du Framework v3.5 (v2.0 + ajout nouvelles fonctionnalités)

Grosses améliorations et nouveautés concernant le développement collaboratif, la gestion des tests, l’analyse du code …

2010      Visual Studio 2010 (n° version interne : 10.0)

                Refonte de l’interface graphique (réalisé avec WPF: Windows Presentation Foundation)

                Nouvelle version du Framework v4.0 (v3.5 + ajout nouvelles fonctionnalités)

 

1.2 - Architecture d’un projet et d’une solution

1.2.1 – Définition et contenu d’un Projet

Un projet, au sens Visual Studio (VS), regroupe au minimum tous les fichiers source nécessaire à la création d’un assembly.

Un assembly est le résultat final que l’on souhaite obtenir tel que : application exécutable ou librairie DLL.

Les assembly seront étudiés en détail au chapitre 3.

Lorsque l’on crée un projet, on décide quel tel type d’assembly on souhaite créer et avec quel langage on souhaite le développer. Cela indique à VS le compilateur à utiliser pour créer cet assembly.

Pour cette raison, il n’est pas possible de mixer des fichiers source de langages différents à l’intérieur d’un même projet. Toutefois, on peut contourner cette limitation grâce aux solutions multi-projets (chapitre sur les Solutions).

 

Par défaut, VS 2010 propose entre autres les langages Visual Basic (VB) , C # (CS), F# ou C++.

Lors de l’installation, on peut choisir lesquels de ces langages on souhaite installer.

 

Le choix du type d’assembly et le langage à utiliser sont enregistrés  dans un fichier projet situé dans le répertoire qui contient les éléments du projet :

MonAppli.vbproj pour un projet ciblant le langage VB

MonAppli.csproj pour un projet ciblant le langage CS

Ce fichier projet est créé automatiquement par VS.

Son contenu est modifiable par l’intermédiaire de différentes boites de dialogue accessibles en ouvrant ce fichier projet depuis l’explorateur de solutions de VS.

Le fichier projet n’est pas nécessaire pour une compilation en mode ligne de commande, mais tous les paramètres et les directives de compilation qu’il contient devront être placés dans la ligne de commande utilisée pour la compilation ou dans un fichier du type makefile.

 

Le projet contient aussi les librairies (DLL) utilisées par les fichiers sources : on les appelle les Références.

En VB, les références sont gérées dans les propriétés du projet.

En C#, les références font l’objet d’un répertoire Références situé directement sous le répertoire du projet.

 

Le projet peut aussi inclure tout autre type de fichiers ou documents qui ne serviront pas pour la compilation mais qui sont en rapport direct avec le projet.

Par exemple: fichiers texte ou Word pour la documentation ou le suivi des versions, fichiers Excel pour le suivi des heures, fichiers Visio pour des synoptiques de process, etc …

Ces fichiers ne seront pas traités par le compilateur.

1.2.2 – Définition et contenu d’une Solution

Une solution, au sens Visual Studio (VS), regroupe un ou plusieurs projets.

Il permet d’effectuer certaines actions globales à effectuer sur l’ensemble des projets qu’il contient, tout en pouvant agir différemment sur certains paramètres de chaque projet tels que configuration (debug ou release), plateforme et flag de génération.

Par exemple :

générer l’assembly de tous les projets en une seule fois, tous en configuration release

générer l’assembly de tous les projets en une seule fois, avec certains en release et d’autres en debug

générer l’assembly de certains projets seulement

 

Une solution peut contenir des projets de type différent et développés chacun avec un langage différent.

Ainsi, une solution peut contenir un projet ciblant une librairie de classes développées en C# et un projet ciblant une application WinForm en VB qui utilise cette librairie en C#.

 

Dans VS, même un projet unique est automatiquement inclus dans une solution.

 

Par défaut, une solution multi-projets contient toujours un projet de démarrage par défaut.

En effet, une solution pouvant contenir plusieurs projets de type programme exécutable, VS prédéfinit  l’exécution d’un seul des projets exécutables.

On indique alors quel est le projet qui doit s’exécuter. Les autres projets de la solution seront simplement générés si cette option a été spécifiée dans les propriétés de la solution.

Il est toutefois possible de définir plusieurs projets en tant que projet de démarrage. Dans cas, ils seront démarrés simultanément lors de l’exécution de la solution.

Exemple d’une solution avec un projet en VB :

 

Explorateur de solutions VS 2010

Arborescence sur le disque dur

Explorateur de solutions VS 2010 projet VB

(dir) Hello-2-vb

    Hello-2-vb.sln

    Hello-2-vb.suo

    (dir) Hello-2-vb

        (dir) Bin

        (dir) My Project

        (dir) Obj

        Hello-2-vb.vbproj

        MonFichierSource.vb

 

 

Exemple d’une solution avec un projet en CS :

 

Explorateur de solutions VS 2010

Arborescence sur le disque dur

Explorateur de solutions VS 2010 projet C#

(Dir)Hello-2-cs

    Hello-2-cs.sln

    Hello-2-cs.suo

    (dir) Hello-2-cs

        (dir) Bin

        (dir) Obj

        (dir) Properties

            AssemblyInfo.cs

        Hello-2-cs.vbproj

        MonFichierSource.cs

 

 

Exemple d’une solution multi-projets avec un projet en VB et un projet en CS :

 

Explorateur de solutions VS 2010

Arborescence sur le disque dur

 

Projet de démarrage

 Explorateur de solutions VS 2010 multi-projets

 

(Dir)Hello-3-vb et cs

    Hello-3-vb et cs.sln

    Hello-3-vb et cs.suo

    (dir) Hello-3-cs

        (dir) Bin

        (dir) Obj

        (dir) Properties

            AssemblyInfo.cs

        Hello-3-cs.vbproj

        MonFichierSource.cs

    (dir) Hello-3-vb

        (dir) Bin

        (dir) My Project

        (dir) Obj

        Hello-2-vb.vbproj

        MonFichierSource.vb

 

 

1.2.3 - Modèles de projets

Lorsque l’on crée un nouveau projet, VS 2010 propose différents modèles disponibles en fonction du langage de développement choisi (VB, C#, F# ou C++) ou d’autres types de projet tels que projets SQL Server, projets de déploiement, de modélisation, de tests.

Un modèle de projet évite de partir de zéro car il crée les fichiers nécessaires pour commencer à développer le contenu de ce projet.

D’autre part, chacun de ses fichiers peut être pré-rempli avec du code afin de gagner du temps.

 

Les modèles de projets sont personnalisables.

Des modèles de projet supplémentaires peuvent donc être créés et ajoutés à la liste.

 

Un modèle de projet est contenu dans un fichier .zip

 

Exemple du modèle de projet pour Application Console en Visual Basic

C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplates\VisualBasic\Windows\1036

Fichier : ConsoleApplication.zip

En ouvrant cette archive, on trouve les fichiers suivants :

App.config

assemblyinfo.vb

consoleapplication.vbproj

consoleapplication.vstemplate

Module1.vb

MyApplication.Designer.vb

MyApplication.myapp

Resources.Designer.vb

Resources.resx

Settings.Designer.vb

Settings.settings

Le fichier consoleapplication.vstemplate contient la description du projet et les fichiers qui seront automatiquement créés et ajoutés dans le nouveau projet.

 

Pour les projets qui nous intéressent (VB ou C#), VS 2010 nous propose entre autres les modèles suivants :

  • Application Console
  • Application Windows Forms
  • Bibliothèque de classes
  • Application Web ASP.NET

1.2.4 – Modèles d’éléments

Lorsque l’on a ouvert un projet sous VS 2010 et que l’on souhaite ajouter un nouvel élément (un fichier de classe, un fichier de module, une feuille de style CSS, …), VS affiche une liste des modèles d’éléments disponibles.

 

Ces modèles peuvent eux aussi être personnalisés et contenir des lignes de code, de xml, des styles ou autres.

Les modèles d’élément sont définis de la même façon que les modèles de projets.

Ils sont représentés par un fichier .zip qui contient le .vstemplate qui décrit le contenu de cet élément ainsi que le fichier qui sera copié.

 

Exemple du modèle d’élément pour une classe en Visual Basic

C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\VisualBasic\Code\1036

Fichier : Class.zip

En ouvrant cette archive, on trouve les fichiers suivants :

Class.vb

Class.vstemplate

 

 

TP

Avant de passer aux TP, écrire au tableau les lignes de code de la 1ere appli (en VB et en C#) qui serviront de base aux exemples.

 

VB

Module MonModule

  Sub Main()

    Console.WriteLine("Hello en VB")

    Console.Read()

  End Sub

End Module

 

C#

usingSystem;

 

class MaClasse

{

  staticvoid Main()

  {

    Console.WriteLine("Hello en cs");

    Console.Read();

  }

}

 

 

Indiquer le nom et l’emplacement des 2 compilateurs VB et C# :

C:\Windows\Microsoft.NET\Framework\v3.5\

C:\Windows\Microsoft.NET\Framework\v4.0\

1.3 - L’interface de Visual Studio

Afin de pouvoir découvrir l’interface, il faut avoir un projet ouvert dans l’IDE.

On crée donc un projet Application Console que l’on nomme ProjetVoid et que l’on supprimera après les explications sur l’interface.

1.3.1 - Menus et fenetres d’affichage

Passer en revue les points suivants en se limitant aux fonctionnalités de base.

  • Le menu Fichier
  • Le menu Edition (recherche et remplacement dans les fichiers)
  • Le menu Affichage : les 3 fenetres ci-dessous (on verra le reste plus tard)
  •       Explorateur de solutions
  •       Affichage de classes
  •       Explorateur d’objets
  • Le menu Projet
  •       Manage NuGet package qui permet d’ajouter des composants pour etendre les fonctionnalités de VS.
  • Le menu Générer
  • Le menu Déboguer (voir plus de détails plus bas)
  • Fenêtres de codes
  • Fenêtre de sortie
  • Fenêtre espion et autres pour debug

1.3.2 – Utilisation du debogueur

Dans la fenetre de code du fichier Module1 créé précédement, ajouter les lignes suivantes en détaillant pas à pas le fonctionnement de l’intellisense :

    Dim a As Integer = 1

    Dim b As Integer = 5

    a = b + 10

 

Décrire le fonctionnement de l’aide en ligne en appuyant sur F1 quand on est sur un mot clé.

Lancer l’éxécution avec F5

 

Placer un point d’arret sur Sub Main et relancer avec F5

Puis avancer en pas à pas avec F10 en faisant remarquer l’affichage de la valeur des variables dans la fenetre Variables locales.

 

Relancer en mode pas à pas jusqu’à la ligne dim b as integer=5,

Modifier la valeur de a dans la fenetre Variables locales et poursuivre en observant les valeurs.

 

On supprime les points d’arret et on en crée un nouveau sur a = a + b

Puis clic droit, Condition, saisir a=2, et F5 : l’appli ne s’arrete pas.

Puis clic droit, Condition, saisir a=1, et F5 : l’appli s’arrete car la condition est remplie.

 

Expliquer la différence entre F10 (principal) et F11 (détaillé)

1.4 - Les outils du SDK

Emplacement : C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin

  • ILDASM.exe
  • PEVerify.exe
  • GacUtil.exe

Ajouter l’outil ILDASM dans le menu Outils

Créer un raccourci de ILDASM sur le bureau ou dans la barre des taches.

1.5 - Création de la 1ere application console

1.5.1 - Compilation d’un projet en ligne de commande : méthode CRO MAGNON !

La méthode suivante est à utiliser si l’on a que le framework d’installé sur l’ordinateur.

Si Visual Studio est installé sur l’ordinateur, on peut éviter la modification de la variable PATH en ouvrant une invite de commande Visual Studio depuis le menu Démarrer, Microsoft Visual Studio 2010, Visual Studio Tools.

En langage VB

On commence par rechercher l’emplacement du compilateur vbc.exe.

Cet emplacement varie en fonction du Framework cible.

C:\Windows\Microsoft.NET\Framework\v3.5\

C:\Windows\Microsoft.NET\Framework\v4.0\

On choisit la version de framework avec laquelle on souhaite travailler (une seule version à la fois, c’est l’inconvénient de la compilation en ligne de commande, à moins de spécifier le chemin complet de vbc.exe pour son exécution)

Puis on va ajouter ce chemin dans les variables d’environnement de Windows :

Propriétés de l’ordinateur / Variables d’environnement / Variables système, modifier la variable PATH : %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;C:\Program Files\Broadcom\Broadcom 802.11\Driver;c:\Program Files\WIDCOMM\Bluetooth Software\;c:\Program Files\WIDCOMM\Bluetooth Software\syswow64;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\;C:\Program Files (x86)\Microsoft SQL Server\80\Tools\Binn\

 

On lui ajoute le chemin trouvé précédemment:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;C:\Program Files\Broadcom\Broadcom 802.11\Driver;c:\Program Files\WIDCOMM\Bluetooth Software\;c:\Program Files\WIDCOMM\Bluetooth Software\syswow64;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\;C:\Program Files (x86)\Microsoft SQL Server\80\Tools\Binn\

;C:\Windows\Microsoft.NET\Framework\v3.5\

On ouvre un nouveau Shell afin d’être certain d’avoir les bonnes variables

On peut contrôler notre modification avec echo %path%

On crée un répertoire Mes documents\Cours\Hellovb

Dans ce répertoire on crée le fichier Hello4.vb suivant :

 

Module MonModule

    Sub Main()

        Console.WriteLine("Hello en VB")

        Console.Read()

    End Sub

End Module

 

Puis on ouvre un Shell et on se place dans notre répertoire :

  • Cd c:\users\<username>\documents\cours\Hellovb

On lance ensuite la compilation avec la commande suivante :

  • Vbc.exe hello.vb

En listant le contenu du répertoire, on trouve le nouveau fichier Hello4.exe que l’on peut exécuter.

 

En langage C Sharp

On commence par rechercher l’emplacement du compilateur csc.exe.

Comme pour vbc.exe, cet emplacement varie en fonction du Framework cible.

C:\Windows\Microsoft.NET\Framework\v3.5\

C:\Windows\Microsoft.NET\Framework\v4.0\

On choisit la version de framework avec laquelle on souhaite travailler (une seule version à la fois, c’est l’inconvénient de la compilation en ligne de commande, à moins de spécifier le chemin complet de csc.exe pour son exécution)

Puis on va ajouter ce chemin dans les variables d’environnement de Windows :

Propriétés de l’ordinateur / Variables d’environnement / Variables système, modifier la variable PATH : %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;C:\Program Files\Broadcom\Broadcom 802.11\Driver;c:\Program Files\WIDCOMM\Bluetooth Software\;c:\Program Files\WIDCOMM\Bluetooth Software\syswow64;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\;C:\Program Files (x86)\Microsoft SQL Server\80\Tools\Binn\

 

On lui ajoute le chemin trouvé précédemment:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;C:\Program Files\Broadcom\Broadcom 802.11\Driver;c:\Program Files\WIDCOMM\Bluetooth Software\;c:\Program Files\WIDCOMM\Bluetooth Software\syswow64;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\;C:\Program Files (x86)\Microsoft SQL Server\80\Tools\Binn\

;C:\Windows\Microsoft.NET\Framework\v3.5\

On ouvre un nouveau Shell afin d’être certain d’avoir les bonnes variables

On peut contrôler notre modification avec echo %path%

On crée un répertoire Mes documents\Cours\Hellocs

Dans ce répertoire on crée le fichier Hello.cs suivant :

 

using System; // Pour la classe Console

class MaClasse

{

    static void Main()

    {

        Console.WriteLine("Hello 3 en CS");

        Console.Read();

    }

}

 

Puis on ouvre un Shell et on se place dans notre répertoire :

  • Cd c:\users\<username>\documents\cours\Hellocs

On lance ensuite la compilation avec la commande suivante :

  • csc.exe hello.cs

En listant le contenu du répertoire, on trouve le nouveau fichier Hello4.exe que l’on peut exécuter.

 

 

1.5.2 - Depuis Visual Studio

Projet unique

Fichier -> Nouveau -> Projet -> Visual  Basic -> Application Console

Modifier Emplacement : C:\Users\<nom>\Cours

Modifier Nom : TP010105Unique

Solution : prénommée par défaut comme le projet :  TP010105Unique

Décocher Créer un répertoire pour la solution

Puis OK

Placer le code VB dans function Main() de Module1.vb

Exécuter le code avec F5

Localiser l’assembly dans bin\debug

Exécuter le code depuis une console Shell.

Solution multi-projets de langages différents

Fichier -> Nouveau -> Projet -> Visual  Basic -> Application Console

Modifier Emplacement : C:\Users\<nom>\Cours

Modifier Nom : TP010105ProjetVB

Cocher Créer un répertoire pour la solution

Modifier Nom de solution TP010105Multi

Placer le code VB dans function Main() de Module1.vb

Contrôler l’exécution du code avec F5.

 

Fichier -> Ajouter -> Nouveau Projet -> Visual  C# -> Application Console

Modifier Nom : TP010105ProjetCS

Placer le code CS dans function Main() de Program.cs

Contrôler l’exécution du code avec F5.

C’est le projet VB qui est exécuté car il est défini en tant que programme de démarrage.

 

Pour lancer le projet TP010105ProjetCS, dans l’explorateur de solution, on fait un clic droit sur TP010105ProjetCS, puis on choisit Définir comme projet de démarrage.

Contrôler l’exécution du code avec F5.

 

On souhaite maintenant lancer les 2 projets en même temps.

Dans l’explorateur de solutions, on fait un clic droit sur le nœud Solution TP010105Multi, puis Propriétés.

Puis Propriétés communes, Projet de démarrage, sélectionner l’option Plusieurs projets de démarrage, puis en face de chaque projet, choisir l’action Démarrer, puis OK.

Contrôler l’exécution du code avec F5 : les 2 projets sont lancés simultanément.