vb.net

Upload: joseph-edwards

Post on 28-Oct-2015

204 views

Category:

Documents


0 download

TRANSCRIPT

  • Ce livre sur VB.Net sadresse aux dveloppeurs, mme dbutants, dsireux de matriser Visual Basic.NET. Aprs une description de lenvironnement de dveloppement (Visual Studio 2008), le lecteur dcouvrira les bases de la programmation oriente objet avec VB.NET. Il voluera de faon progressive vers sa mise en uvre avec le dveloppement dapplications Windows Form. Les nombreux exemples et les conseils sur lutilisation des outils de dbogage lui fourniront une aide prcieuse pendant la ralisation dune application. Un chapitre consacr laccs aux bases de donnes laide de ADO.NET 2.0 et de SQL permettra dvoluer vers le dveloppement dapplications client-serveur. Les puissantes fonctionnalits de LINQ sont prsentes et dtailles pour faciliter laccs et la manipulation des donnes. Le langage XML est galement prsent permettant ainsi de faciliter lchange dinformations avec dautres applications. Les utilisateurs des versions prcdentes dcouvriront les nouveauts et amliorations de cette version 2008 (types nullables, mthodes partielles, classes anonymes, ...) leur permettant de dvelopper encore plus rapidement et facilement des applications pour le framework .NET 3.5 et pour Windows Vista. La distribution dune application est prsente avec lutilisation de Windows Installer et de la technologie Click Once. Les exemples cits dans le livre sont en tlchargement sur cette page.

    Ce livre numrique a t conu et est diffus dans le respect des droits dauteur. Toutes les marques cites ont t dposes par leur diteur respectif. La loi du 11 Mars 1957 nautorisant aux termes des alinas 2 et 3 de larticle 41, dune part, que les copies ou reproductions strictement rserves lusage priv du copiste et non destines une utilisation collective, et, dautre part, que les analyses et les courtes citations dans un but dexemple et dillustration, toute reprsentation ou reproduction intgrale, ou partielle, faite sans le consentement de lauteur ou de ses ayants droit ou ayant cause, est illicite (alina 1er de larticle 40). Cette reprsentation ou reproduction, par quelque procd que ce soit, constituerait donc une contrefaon sanctionne par les articles 425 et suivants du Code Pnal. Copyright Editions ENI

    VisualBasic.NET(VB.NET)

    ThierryGROUSSARD

    Rsum

    L'auteur Analyste et dveloppeur pendant plus de 10 ans, Thierry Groussard sest ensuite orient vers la formation, et plus particulirement dans le domaine du dveloppement. Sa connaissance approfondie des besoins de lentreprise et ses qualits pdagogiques rendent cet ouvrage particulirement adapt lapprentissage et la mise en pratique du dveloppement sous VB.NET 2008.

    - 1 - ENI Editions - All rigths reserved

  • Introduction

    Laplateforme.NETfournitunensembledetechnologiesetdoutilsfacilitantledveloppementdapplicationsetproposeunesolutionpourpratiquementtouslestypesdapplications :

    l applicationsWindowsclassiques

    l applicationWeb

    l servicesWindows

    l servicesWeb.

    Touscestypesdapplicationssontralisablesgrceunlmentessentiel : leFramework.NET.CeFrameworkprendencharge,par lintermdiairedenombreusescouches logiciellessuperposes, lintgralitde lavieduneapplication,dudveloppement jusqu lexcution. Le framework doit tre hberg par un systme dexploitation avec lequel il vainteragir.Lepremiersystmepermettantde laccueillirestbiensrWindowsmaisdautresversions sontdisponiblespermettantladaptationdelaplateforme.NETdessystmestelsLinuxouUnix.

    Leframeworkcontientdeuxlmentsprincipaux : leCommonLanguageRuntimeetlabibliothquedeclassesdu.NETFramework.

    Le Common Language Runtime est la base du .NET Framework. Le runtime peut tre considr comme un moteurdexcutionquigrelexcutionducodeetassuregalementlagestiondelammoire.LecodeprisenchargeparleCommonlanguageRuntimeestappelcodemanag.

    La bibliothque de classes est un ensemble de classes pouvant tre utilis pour le dveloppement de tout typedapplication.Nouslemanipuleronstoutaulongdecetouvrage.

    1.PrincipedefonctionnementduCommonLanguageRuntime

    DanslesapplicationsWindowstraditionnelles,lesystmeprenddirectementenchargelexcutionducode.Eneffet,celuiciestgnrparlecompilateurassociaulangagedeprogrammationutilispourlaconceptiondelapplication.Lersultatdecettecompilationcorrespondunfichierbinairecontenantlecodespcifiquepourlemicroprocesseuretle systme dexploitation avec lesquels lapplication doit fonctionner. Aucune compatibilit avec un autre type demicroprocesseur ou systme dexploitationnest possible. Pour sen convaincre, il suffit de tenter lexcutionduneapplicationprvuepourWindowssurunsystmeLinuxpourvrifiercetteincompatibilit.SilontentelexcutionsurunestationdetravailSUN,quiutiliseuntypedemicroprocesseurradicalementdiffrent,lersultatestidentique.Lasolutionpoursaffranchirdecesproblmesconsistegnrerlacompilation,nonpasuncodespcifique,maisuncode gnrique, indpendant de toute plateforme logicielle oumatrielle. Ce code est, aumoment de lexcution,confiunemachinevirtuellequienassure lexcution.Ce code sappelleMicrosoft IntermediateLanguage(MSIL).Lorsdelexcutiondelapplication,cecodeestprisenchargeparlamachinevirtuellequienassurelatraductionen

    - 1 - ENI Editions - All rigths reserved

  • instructionsspcifiquespour lemicroprocesseurde lamachine.Cette traductionnestpaseffectue,enblocds ledbutdelapplication,maisuniquementaufuretmesuredesbesoins.Eneffet,pourquoiperdredutempstraduireducodeMSIL,silnestjamaisutilisparlasuite.CestpourcetteraisonquelecompilateurutilispourcettetraductionsappellecompilateurJustInTime(JIT).

    Lesavantagesdecette solutionsontvidents carpourexcuterunemmeapplicationsurplusieursplatesformesmatrielles et ou logicielles, il suffit dobtenir la machine virtuelle capable deffectuer la traduction. Cette machinevirtuelleestdisponiblepourtouslessystmesMicrosoft.LeprojetMonoproposeuneversiondelamachinevirtuellepourlesplatesformessuivantes :

    l Linux

    l MacOSX

    l SunSolaris

    l BSDOpenBSD,FreeBSD,NetBSD

    Ellessontdisponiblesentlchargementsurlesitehttp://www.monoproject.com

    Leschmasuivantreprendlensembledecesoprations :

    2.LesservicesduCommonLanguageRuntime

    Lamachinevirtuellenesecontentepasdeffectuerlatraductionducode.LecodeMSILestaussiappelcodemanag,cequi sousentendquun certainnombredoprations supplmentaires seront ralises sur le codeaumomentdelexcution.LafigureciaprsreprendlensembledesfonctionnalitsdisponiblesdansleCommonLanguageRuntime.

    ClassLoader

    Ilgrelechargementenmmoiredesinstancesdeclasses.

    - 2 - ENI Editions - All rigths reserved

  • ILToNativeCompilers

    Ilconvertitlecodeintermdiaire(MSIL)encodenatif.

    CodeManager

    Ilgrelexcutionducode.

    GarbageCollector

    Ilassurelagestiondelammoireensurveillantlesinstancesdeclassesquinesontplusaccessibles.

    SecurityEngine

    Ilpermetlavrificationdelidentitdelapersonnedemandantlexcutionducodeetaccepteounoncetteexcution,enfonctiondesautorisationsaccordes.

    DebugEngine

    Ilpermetledbogagedelapplication,enprenantenchargeparexemplelexcutionenpaspasducode.

    TypeChecker

    Ilsurveillelutilisationdevariablesnoninitialisesetlesconversionsentredesvariablesdetypediffrent.

    ExceptionManager

    Il fournit la gestion structure des exceptions en liaison avecWindowsStructured ExceptionHandling (SEH).Cettetechniquepermetunegestionindividuelledechaqueexceptionpluttquunegestionglobale.

    ThreadSupport

    Ilproposeunensembledeclassespermettantlaralisationdapplicationsmultithread.

    COMMarshaler

    Il permet de traduire des appels vers des composants COM, assurant par exemple la conversion des types dedonnes.

    BaseClassLibrarySupport

    Ilfournitlaccsauxservicesdisponiblessurlesystmedexploitationhte.

    3.LaBaseClassLibrary

    LeFramework.NETmetladispositiondesdveloppeursunensembledoutilsluipermettantdobtenirunesolutionrapideunemajoritdeproblmesrencontrslorsdelaralisationduneapplication.

    Cesoutilssontdisponiblessousformedeclasses.linversedesbibliothquesdecodedeslangagesdelagnrationprcdente, qui ntaient quune liste interminable de procdures ou fonctions, la bibliothque de classes estorganisesous formedunestructurehirarchise.Llmentessentieldecettehirarchisationest lespacedenom(Namespace).Ilpermetleregroupementlogiquedeclassesayantdespointscommuns.Parexemple,onretrouvedanslenamespaceSystem.Datatouteslesclassesutilisablespouraccderunebasededonnes.

    Cettebibliothquedeclassesestbiensrindpendantedunquelconquelangagedeprogrammation.Ellepermetdoncle mlange de diffrents langages au cours du dveloppement dune application. Elle est galement parfaitementintgreVisualStudio,cequinousprocureunconfortdutilisationapprciableavecdesoutilscommeIntelissence.Commecettelibrairieestorienteobjet,elleestfacilementextensibleparlebiaisderelationsdhritage.

    Labibliothquecontientunequantitimpressionnantedespacesdenometdeclasse,tantetsibienque,aucoursdevosdveloppementsavecVisualBasic,ilyadeforteschancespourquevousnutilisiezjamaiscertainsdentreeux.

    Lesespacesdenomslesplusutilisssontlessuivants :

    System

    - 3 - ENI Editions - All rigths reserved

  • CestlespacedenomracinepourlestypesdedonnesdansleFramework.NET.IlcontientnotammentladfinitiondelaclasseObject,quiestlanctredetouslestypesdedonnesduFramework.NET.

    System.Windows

    IlcontientlensembledeslmentspermettantlacrationdinterfacesutilisateursWindows.

    System.Web

    IlcontienttouteslesressourcesncessairespourlacrationdapplicationsWeb,avecparexemple,lesclassesdelatechnologieASP.NEToulesclassesutilisablespourlacrationdeservicesWebXML.

    System.data

    Ilcontientunensembledeclassesspcialisesdanslaccsauxbasesdedonnes,aveclesupportdeADO.NET.

    System.Xml

    Le langage Xml est devenu omniprsent et cet espace de nom contient les classes assurant la manipulation dedocumentsXml.

    4.Lesversionsetvolutionsdelaplateforme.NET

    La premire version (1.0) de la plateforme .NET sort en janvier 2002 avec Visual Studio 2002. Cette version estrapidementremplaceparlaversion1.1quicorrigequelquespetitsproblmesdejeunessedelaversionprcdenteet ajoute des technologies qui ntaient auparavant disponibles quen tant quinstallations indpendantes et sontdsormaisincluses.Lesapportsdecetteversionsontprincipalement :

    l LesContrlesmobilesASP.NET(anciennementMicrosoftMobileInternetToolkit)quitendentleFramework.NETpar la prise en charge des priphriques mobiles (sans fil) tels que tlphones portables et assistantsnumriquespersonnels.

    l Le fournisseur de donnes .NET Framework pour ODBC et le fournisseur de donnes pour Oracle quiauparavantntaientdisponiblesquepartlchargement,sontdsormaislivrsavecle.NETFramework.

    l LapriseenchargedelanouvellemisejourduprotocoleInternetcourammentappeleIPversion 6ouplussimplement IPv6. Ce protocole est conu pour augmenter sensiblement lespacedadressage qui est utilispouridentifierlespointsdentredecommunicationdInternet.

    Elleestdisponibleaveclaversion2003deVisualStudioenavril2003.

    Ilfautattendrenovembre2005pourvoirarriverlaversion2.0associelasortiedeVisualStudio 2005.Cetteversionapportedenombreusesamliorations :

    l Lapriseenchargedelanouvellegnrationdordinateurs64bitspermettant lacrationdapplicationsplusperformantes.

    l UnevolutionmajeuredanslaccsauxbasesdedonnesavecADO.NET2.0amliorantlutilisationdeXML.

    l LedveloppementdapplicationsWebestgalementdeplusenplusfacileaveclanouvelleversiondeASP.NETproposantunemultitudedenouveauxcontrles.

    l LutilisationdelaclasseConsoleestoptimiseaveclajoutdenouvellespropritsetmthodes(gestiondescouleurs,effacement,positionducurseur).

    l Le.NETFramework2.0rintroduitlafonctionnalitModifier&ContinuerpermettantlutilisateurquidbogueuneapplicationdansVisualStudiodemodifierlecodesourceenmodearrt.Unefoislesmodificationsducodesourceappliques,lutilisateurpeutreprendrelexcutionducodeetobserverleffet.

    l Lapparitionde lanotiondegnriquequipermetauxclasses,structures, interfaces,mthodesetdlgusdtredclarsetdfinisavecdesparamtresdetypenonspcifiougnriqueaulieudetypesspcifiques.Lestypesrelssontspcifisultrieurementlorsdelutilisation.

    - 4 - ENI Editions - All rigths reserved

  • Laversion3.0arriveennovembre2006etapportedenouvellestechnologiestoutenrestantlabaseuneversion2.0.Cestechnologiessontdisponiblessousformedetlchargementsquiviennentsintgrerauframework2.0.Voiciunbrefaperudecesnouveauts:

    l WindowsPresentationFoundation(WPF) reprsentelenouveausystmedinterfacesgraphiques.Ilsebasesurunmoteurderenduvectorieletpermetunesparationplusclaireentreladfinitiondelinterfacegraphiqueduneapplicationetsoncode.IlutilisepourcelalelangageXAML(eXtensibleApplicationMarkupLanguage).Lestchespeuventainsitreplusfacilementrpartiesentredesignersetdveloppeurs.

    l Windows Communication Foundation (WCF) constitue la nouvelle base de dveloppement dapplicationsdistribues.Ilfacilitelacommunicationentreapplicationsenajoutantunecouchedabstractionuniformisantlestechniquesdecommunicationentreapplications(ServicesWeb,.NETRemoting,MicrosoftTransactionServer,etMicrosoftMessageQueuing,).

    l WindowsWorkflowFoundation (WF)est composdunmodledeprogrammation,dunmoteurdexcutionetdoutilspour intgrerdesworkflowsdansuneapplication.Unworkflowpeuttredfinicommeunensembledactions ou tapes sexcutant dans un ordre prdfini. Ces actions peuvent senchaner en fonction deconditions,dinteractionsavecdesprocessusinformatiquesouenfonctiondinteractionshumaines.

    l WindowsCardspacefournitunenouvelletechniqueauxutilisateurspoursidentifierdansuneapplication.EllealammevocationqueMicrosoftPassportmaisnestpasspcifiqueauxapplicationsMicrosoft(Hotmail,MSDN).

    - 5 - ENI Editions - All rigths reserved

  • criture,compilationetexcutionduneapplication

    Danscechapitrenousallonsdtaillerlecycledevieduneapplication,depuislardactionducodejusqulexcutiondelapplication,entudiantendtaillesmcanismesmisenuvre.

    1.critureducode

    Limmensemajoritdesapplicationssontdveloppesgrceunenvironnementintgrquiregroupelesprincipauxoutilsncessaires,savoir :

    l unditeurdetexte

    l uncompilateur

    l undbogueur.

    Cetteapprocheestde loin laplus confortable.Ellencessite cependantunepetitephasedapprentissagepour sefamiliariser avec loutil. Pour notre premire application, nous allons utiliser une dmarche un petit peu diffrentepuisquenousallonsutiliserdesoutilsindividuels : leblocnotesdeWindowspourlcritureducodeetlecompilateurenlignedecommandespourVisualBasic.

    NotrepremireapplicationseratrssimplepuisquelleafficherasimplementlemessageBonjourdansunefentredecommande.

    Voicilecodedenotrepremireapplicationquenousallonsensuiteexpliquerligneparligne.IlestsaisirlaidedublocnotesdeWindowsoudetoutautrediteurdetexte,conditionqueceluicinerajoutepasdecodedemiseenpagelintrieurdudocument,commelefontparexempleleslogicielsdetraitementdetexte.

    Exemple

    Imports System public Module test dim message as string="bonjour" public sub main () console.writeline(message) end sub end module

    Ce code est sauvegarder dans un fichier portant lextension .vb. Cette extension nest pas obligatoire,mais ellepermetde respecter les conventionsutilisesparVisualStudio.Dtaillonsmaintenant lesquelques lignesdenotrepremireapplication.

    Imports System

    CettelignepermetderendredirectementaccessiblesleslmentsprsentsdanslenamespaceSystem.Sanselle,ilfaudraitutiliser lesnomspleinementqualifispourtous leslmentscontenusdans lenamespace.Dansnotrecas,nousdevrionsalorsutiliser :System.Console.writeline("Bonjour")

    public Module test ... end module

    DansVisualBasic,touteportiondecodedoittrecontenuedansunmoduleouuneclasse.

    dim message as string="bonjour"

    Cette ligne dclare une variable. Toutes les variables doivent tre dclares avant de pouvoir tre utilises. Ladclaration permet de spcifier le type dinformation que la variable va contenir, ici une chane de caractres, etventuellementunevaleurinitiale,bonjourdansnotrecas.

    public sub Main() ... end sub

    Toutes les instructions autres que des dclarations doivent tre places dans une procdure ou une fonction. LamajeurepartieducodeestdoncplaceentrelesinstructionsSubetEndSubouFunctionetEndFunction.Parmitoutesces procdures et fonctions, lune dentre elles est dsigne comme le point dentre dans lapplication. Cestpar

    - 1 - ENI Editions - All rigths reserved

  • lexcutiondecetteprocdurequedmarrelapplication.CetteprocduredoittrepubliqueetdoitsappelerMain.

    Console.writeline(Bonjour)

    La classe Console dfinie dans lespace de nom System fournit un ensemble de mthodes permettant laffichagedinformationssurlaconsoleoulalecturedinformationsdepuis laconsole.Laprocdurewritelinepermet laffichagedunechanedecaractressurlaconsole.

    noter galement que Visual Basic ne fait pas de distinction entre les minuscules et les majuscules dans lesinstructions. Si vous utilisez lditeur de Visual Studio pour rdiger votre code, celuici fera automatiquement lesmodificationspouruniformiserlorthographedevotrecode.

    2.Compilationducode

    LeFramework .NET inclutun compilateuren lignede commandepourVisualBasic. Pour compiler le code sourcedenotreexemple,nousdevonsouvrirunefentredecommandeDOSpourpouvoir lancer lecompilateur.Pourcela,unraccourciatcrdans lemenudmarrerpendant linstallation.Ceraccourci lance lexcutiondunfichier .batquipositionne certaines variables denvironnement ncessaires pour le bon fonctionnement des outils Visual Studio enlignedecommande.

    partirdelafentredecommandeouverte,ilconvientdeseplacerdanslerpertoiredanslequelsetrouvelefichiersource.

    Lacompilationestlanceparlacommandevbc Bonjour.vb.

    Aprsunbref instant, le compilateurnous rend lamain.Nouspouvonsvrifier laprsencedu fichierexcutableetvrifiersonbonfonctionnement.

    - 2 - ENI Editions - All rigths reserved

  • Notre premire application est vraiment trs simple. Pour des applications plus volues, il sera parfois utile despcifier certaines options pour le fonctionnement du compilateur. Lensemble des options disponibles peut treobtenuenlanantlacommandevbc / ?.

    Lesprincipalesoptionssont :

    /out:fichier.exe

    Cetteoptionpermetdespcifierlenomdufichierrsultatdelacompilation.Pardfaut,cestlenomdufichiersourceencoursdecompilationquiestutilis.

    /target :exe

    Cetteoptiondemandeaucompilateurlagnrationdunfichierexcutablepouruneapplicationenmodeconsole.

    /target :winexe

    CetteoptiondemandeaucompilateurlagnrationdunfichierexcutabledapplicationWindows.

    /target :library

    Cetteoptiondemandeaucompilateurlagnrationdunfichierbibliothquedll.

    /reference :liste de fichiers

    Cetteoptionindiqueaucompilateurlalistedesfichiersrfrencsdanslecodeetncessairespourlacompilation.Lesnomsdesfichiersdoiventtresparsparunevirgule.

    3.Analysedunfichiercompil

    Maintenantquenotrefichierexcutableestcr,essayonsdevoircequilcontient.

    Premiresolution : louvriravecleblocnotesdeWindows

    - 3 - ENI Editions - All rigths reserved

  • Lersultatnestpastrsparlant,cestlemoinsquelonpuissedire!

    NousavonsditquelecompilateurgnreducodeMSIL.Cestdonccecodequenousvisualisonsdansleblocnotes.PourvisualiserlecontenudunfichierMSIL,leframework.NETproposeunoutilplusadapt.

    Deuximesolution : utiliserundsassembleur

    Cetoutilestlancpartirdelalignedecommandeparlinstructionildasm.

    Il permet de visualiser, de manire plus claire que le blocnotes, un fichier gnr par le compilateur. Il convientdindiquer le fichier que lon souhaite examiner, par le menu Fichier Ouvrir. Le dsassembleur affiche alors soncontenu.

    Lesinformationsprsentesdanslefichierpeuventtresparesendeuxcatgories : lemanifestetlecodeMSIL.Le

    - 4 - ENI Editions - All rigths reserved

  • manifestcontientlesmtadonnespermettantdedcrirelecontenudufichieretlesressourcesdontilabesoin.Onparledanscecasdefichierautodescriptif.CettetechniqueesttrsintressantecardsqueleCommonLanguageRuntimelitlefichier,ildisposedetouteslesinformationsncessairespoursonexcution.

    Ilnyaplusbesoindavoirrecoursunenregistrementdansleregistredelamachine.Lemanifestpeuttrevisualisparundoubleclicsursonnom.

    Nous retrouvons dans cemanifest des informations indiquant que, pour que lapplication puisse fonctionner, elle abesoindesassemblagesexternesmscorlib,Microsoft.VisualBasicetSystem.

    LadeuximepartiecorrespondrellementaucodeMSIL.Unensembledicnesestutilispourfaciliterlavisualisationdesinformations.

    Symbole Signification

    Plusdinfos

    Espacedenoms

    Classe

    Interface

    Classedevaleurs

    Enumration

    Mthode

    Mthodestatique

    Champ

    Champstatique

    vnement

    - 5 - ENI Editions - All rigths reserved

  • Comme pour lemanifest, un double clic sur un lment permet dobtenir plus de dtails. Ainsi, nous pouvons, parexemple,visualiserlatraductiondenotreprocduremain.

    Dans un exemple de code aussi simple, il est facile de faire la correspondance entre le code Visual Basic et satraductionencodeMSIL.PourlespersonnesenthousiasmesparlecodeMSIL,ilexisteunassembleurMSIL : ilasm.CetoutilattendunfichiertextecontenantducodeMSILetletransformeenformatbinaire.

    PuisquenoussommescapablesdevisualiserlecodeMSIL,nouspouvonsvrifierquilestbienindpendantdulangagesourceutilispourdvelopper lapplication.Voici donc le codeC#qui ralise lammechosequenotre codeVisualBasic.

    using System; class Program { static String message = "Bonjour"; static void Main(string[] args) { Console.WriteLine(message); } }

    Aprscompilationetdsassemblageparildasm,voicicequilnousprsentepourlamthodeMain.

    IlnyaaucunediffrenceparrapportlaversionVisualBasicdelamthodeMain.

    Ilestgalementpossiblede faire ladmarche inverseen transformantun fichier textecontenantducodeMSILenfichierbinairecorrespondant.Cettetransformationsefaitgrcelassembleurilasm.Laseuledifficultestdecrerunfichier texte contenant le code MSIL carmme si la syntaxe est comprhensible, elle nest pas trs intuitive. Unesolutionpeuttrededemanderloutilildasm(ledsassembleur)degnrercefichiertexte.Pourcelaaprs,avoirouvertlefichierexcutableoulabibliothquedllavecildasm,vousdevezutiliserloptionDumpdumenuFichier.Voustesalorsinvitchoisirlenomdufichiergnrer(extension.il).

    Proprit

    lmentdemanifesteoudinfosdeclasse

    - 6 - ENI Editions - All rigths reserved

  • Cefichierpeuttreensuitemodifiavecunsimplediteurdetexte.Remplacezparexemplelecontenudelavariablemessageaveclachane"Hello".

    .method private hidebysig specialname rtspecialname static void .cctor() cil managed { // Code size 11 (0xb) .maxstack 8 IL_0000: ldstr "Hello" IL_0005: stsfld string Program::message IL_000a: ret } // end of method Program::.cctor

    Sauvegardezensuite lefichier.Ilneresteplusmaintenantquregnrer lefichierexcutablegrce lassembleurilasm.Saisissezpourcelalalignedecommandesuivante:

    ilasm Bonjour.il /output=Hello.exe

    Loption/output=Hellopermetdindiquerlenomdufichiergnr.Sicetteoptionnestpasspcifiecestlenomdufichier source qui sera utilis. Vous pouvez maintenant lancer le nouvel excutable et vrifier le message affich.Toutescesmanipulationspeuventsefairesurnimportequelfichierexcutableoubibliothquedll.Laseuledifficultrsidedanslevolumedinformationsfourniparladcompilation.Ceciposecependantunproblme : toutepersonnedisposant des fichiers excutables ou bibliothques dll dune application peut modifier lapplication. Certes lesmodifications risquent dtre prilleuses mais la modification dune valeur reprsentant une information importantepourlapplication(motdepasse,cldelicence...)estenvisageable.Uneparadepossiblecegenredemanipulationconsiste rendre le code gnr par le dcompilateur le plus incomprhensible possible. Pour cela, il faut agir auniveaudufichierexcutableoudelabibliothquedllenmodifiantlesinformationsquilscontiennentsans,biensr,enperturberlefonctionnement.Desoutilsappelsobfuscateurssontcapablesderalisercetteopration.VisualStudioestfourniavecunoutildelasocitPreEmptiveSolutionsappelDotFuscatorCommunityEdition.Cetteversionpermetderaliserlesoprationsdebasepourembrouillerunfichier.Leprincipaltraitementeffectusurlefichierconsisterenommer les identifiantscontenusdans le fichier (nomdesvariables,nomdesprocdureset fonctions)avecdesvaleurstrspeuexplicites,engnraluncaractreunique.VoiciunextraitdeladcompilationdufichierBonjour.exeaprstraitementparDofuscatorCommunityEdition.

    .class private auto ansi beforefieldinit a extends [mscorlib]System.Object { .field private static string a .method private hidebysig static void a (string[] A_0) cil managed { .entrypoint // Code size 13 (0xd) .maxstack 8 IL_0000: nop IL_0001: ldsfld string a::a IL_0006: call void [mscorlib]System.Console::WriteLine(string) IL_000b: nop IL_000c: ret } // end of method a::a

    .method public hidebysig specialname rtspecialname instance void .ctor() cil managed { // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 IL_0001: call instance void [mscorlib]System.Object::.ctor() IL_0006: ret } // end of method a:: .ctor

    .method private hidebysig specialname rtspecialname static void .cctor() cil managed { // Code size 11 (0xb) .maxstack 8 IL_0000: ldstr "Bonjour" IL_0005: stsfld string a::a IL_000a: ret

    - 7 - ENI Editions - All rigths reserved

  • } // end of method a:: .cctor

    } // end of class a

    Dans ce fichier plus aucune trace des noms utiliss dans le code. La procdure main sappelle maintenant a, lavariable message sappelle maintenant a aussi. Imaginez le rsultat dun tel traitement sur un fichier contenantplusieursdizainesdevariablesetprocdures !

    LaversionProfessionalEditionpermetgalementlecryptagedeschanesdescaractres,lamodificationetlajoutdecodeinutilepourcomplexifierlesstructuresdecontrles(boucles,conditions).

    CidessousunexempledetransformationextraitdeladocumentationdeDotfuscator.

    Lecodeoriginal :

    public int CompareTo(Object o) { int n = occurrences - ((WordOccurrence)o).occurrences; if (n == 0) { n = String.Compare(word, ((WordOccurrence)o).word); } return(n); }

    Lecodegnr :

    public virtual int _a(Object A_0) { int local0; int local1; local0 = this.a - (c) A_0.a; if (local0 != 0) goto i0; goto i1; while (true) { return local1; i0: local1 = local0; } i1: local0 = System.String.Compare(this.b, (c) A_0.b); goto i0; }

    Lanalysedemilliersdelignesdecodedecetyperisquedeprovoquerquelquesmigraines!Ilestdoncprfrabledeconserver le code source original pour lesmodifications ultrieures. Plus dinformations sont disponibles sur le sitehttp://www.preemptive.com/.

    4.Excutionducode

    Lorsquun utilisateur excute une application manage, le chargeur de code du systme dexploitation charge leCommonLanguageRuntimequiensuitedmarrelexcutionducodemanag.Commeleprocesseurdelamachinesurlaquelle sexcute lapplication ne peut pas prendre en charge directement le code MSIL, Le Common LanguageRuntimedoitleconvertirencodenatif.

    Cetteconversionneconcernepas latotalitducodeauchargementde lapplication.Ilconvertit lecodeaufuretmesuredesbesoins.Ladmarcheadopteestlasuivante :

    l Au chargement dune classe, le Common LanguageRuntime remplace chaquemthode de la classe par unmorceaudecodedemandantaucompilateurJITdelecompilerenlangagenatif.

    l Parlasuite,lorsquelamthodeestutilisedanslecode,laportiondecodegnreauchargemententreenactionetcompileencodenatiflamthode.

    l Lemorceaudecodedemandantlacompilationdelamthodeestensuiteremplacparlecodenatifgnr.

    l Lesfutursappelsdecettemthodeseferontdirectementsurlecodenatifgnr.

    - 8 - ENI Editions - All rigths reserved

  • volutiondeVisualBasic1VisualBasic.NET2008

    Depuis la version 1.0, sortie en 1991, jusqu la version 6.0, sortie en 1998, Visual Basic a subi de nombreusesvolutions. Visual Basic fut conu lorigine comme un langage simple permettant de dvelopper rapidement uneapplicationsousWindows(commelepermettaitGWBASICsousMSDOS).Cettesimplicitdutilisationreposeengrandepartiesurlenvironnementdedveloppement,quimasquelestchesfastidieusesdelacrationduneapplicationsousWindows.

    Delaversion1.0laversion3.0,onnassisteaucunervolutiondansVBmaisdesvolutionsclassiquespourunlangagedeprogrammation.

    Aveclapparitiondelaversion4.0en1996,VBentredanslacourdesgrandsavecunemultitudedvolutions:

    l possibilitdecrerdesapplications32bits(lapriseenchargedesapplications16bitstaitencoreassure)

    l crationdeDLLpartirdeVB

    l utilisationdeDLL(critesenVBoutoutautrelangage)

    l apparitiondefonctionnalitsobjetdansVB(utilisationdeclasses).

    Malgroupeuttrecausedetoutescesvolutions,laversion4.0deVBntaitpastrsstable.

    Trsrapidement,en1997,Microsoftsortlaversion5.0deVisualBasicquinamnepasdegrandesvolutionssicenestladisparitiondesapplications16bits.

    Lesvolutionsdelaversion6.0,quisortunanplustard,portentessentiellementsurlamthodedaccsauxbasesdedonnes,avecleremplacementdeDAO(DataAccessObject)desversionsprcdentesparADO(ActiveDataObject),quidevientdailleurslamthodecommuneauxlangagesMicrosoftpourlaccsauxdonnes.

    Cetteversiondevratoutefoisattendreleservicepack4pourpermettreunfonctionnementcorrectdecertainscontrlesdaccsauxdonnes(leDataEnvironment).

    Bienqutantgnreencodenatifpar lacompilation,uneapplicationVBatoujoursbesoindumoduleruntimepourpouvoirsexcutersurunemachine(vbrun.dll)car,contrairementdeslangagescommeC++,VBnutilisepaslinterfacedeprogrammationWIN32pourappelerlesfonctionsdusystmedexploitation.

    Laversionsuivantequisorten2002apportedeschangementsradicauxdansVisualBasic.CetteversionsintgredanslasuiteVisualStudio .Net reposantsurunenouvelle infrastructurepour lacrationet lexcutiondapplications sousWindows : le Framework .NET. Les principes de fonctionnement de cette infrastructure sont dcrits dans le chapitrePrsentationdelaplateforme.NET.

    Les versions 2003 et 2005 suivent lvolution du Framework.NET (version 1.1 puis 2.0) apportant toujours plus defonctionnalitsetdoutilsfacilitantetacclrantledveloppeentdapplications.

    Laversion2008apportegalementsonlotdenouveauts.Parmilesplusremarquables :

    l Possibilitdegnreruneapplicationpouruneversionspcifiqueduframework(2.0,3.0,3.5).

    l Priseenchargeouamliorationde lapriseenchargedenouvelles technologiespour ledveloppementWEB(AJAX,JavaScript,CSS).

    l IntgrationdeLinqdans les langagesVisualBasicetVisualC#permettantduniformiser laccsauxdonnesindpendammentdelasource(objets,basesdedonnes,fichierXML).

    l Ajoutdunutilitairedemappageobjet/relationnel(O/RDesigner).

    l CrationdapplicationsWPFoptimisespourWindowsVista.

    l PossibilitdecrerdestatsavecReportDesigner(enremplacementdeCrystalReport).

    - 1 - ENI Editions - All rigths reserved

  • Installationetpremierdmarrage

    1.Configurationncessaire

    Pourpermettreunfonctionnementcorrect,VisualStudioncessiteuneconfigurationminimale.Microsoftconseille lesvaleurssuivantes:

    2.Procduredinstallation

    Leslmentsncessairessont :

    l lesCDRomouDVDdeVisualStudio.NET

    l delaplacedisponiblesurvotredisquedur(de3,85Goenfonctiondesoutilsinstalls)

    l etsurtoutdelapatience,carlinstallationestlongue...

    AprsinsertiondupremierCDRometquelquessecondesdechargement,lcransuivantsaffiche :

    Composant Minimumrecommand Performancesoptimales

    Processeur Pentium1,6GHzouquivalent Pentium2,2GHzouquivalent

    RAM 384Mo 1024Mo

    Espacedisque 1GBsurledisquesystmeetde2,83,8GBsurunautredisque

    Video 1024x768 1280x1024

    LecteurCDRomouDVD Indispensable Indispensable

    SystmedexploitationMicrosoftWindowsXPMicrosoftWindowsServer2003MicrosoftWindowsVista

    Touteversionultrieure(XP,2003)avecledernierservicepackdisponible(SP2pourXP,SP2pourWindows2003)

    - 1 - ENI Editions - All rigths reserved

  • Cet cranpropose, pardes lienshypertexte, les trois actionsncessairespour linstallationdeVisualStudio.NousdevonsbiensrdbuterparlinstallationdeVisualStudio.

    Lapremiretapeconsiste,pourlassistantdinstallation,collecterlesinformationsconcernantvotresystme :

    Lcransuivantvousinformedursultatdelanalyseeffectueetvousdemandedaccepterlecontratdelicenceetdesaisirlaclassocievotreproduit :

    - 2 - ENI Editions - All rigths reserved

  • Lcransuivantvousproposedepersonnaliserlinstallationenchoisissantlesoutilsetlangagesinstallsainsiquelerpertoiredans lequel ilsseront installs.Enfonctiondevoschoix, lespacedisquencessairepour linstallationestcalcul.Leprogrammedinstallationvrifiegalementquelespacedisquedisponibleestsuffisantpourmenerbienlinstallation.

    AprsvalidationdevosparamtresparleboutonInstaller,leprogrammedinstallationdbutelacopiedesfichiers.

    - 3 - ENI Editions - All rigths reserved

  • Lcransuivantaffichelaprogressiondelinstallation :

    SivousinstallezleproduitpartirdeCDRom,vousserezinvitinsrerledisquesuivantpermettantdepoursuivrelaphasedinstallation.

    Aprsunetrentainedeminutesdecopie,lcransuivantvousinformedusuccsdelinstallation.

    - 4 - ENI Editions - All rigths reserved

  • Aprs la fermeture de cet cran par le bouton Terminer, vous revenez lcran initial et pouvez alors choisirlinstallationdeladocumentationMSDN.

    CommepourlinstallationdeVisualStudio,unassistantvousguidedanslesdiffrentestapes.

    VousdevezaccepterlecontratdelicenceMSDNpourpouvoirpoursuivrelinstallation.

    - 5 - ENI Editions - All rigths reserved

  • Puis vous devez choisir le type dinstallation dsire. Si vous ne choisissez pas linstallation complte, vous serezparfoisobligde fournir leou lesdisquessourcedeMSDN lorsde laconsultationdecertainesrubriquesdaide.Enfonctiondevoschoix,lespacedisquencessaireestcalculetaffich.

    Lultimetapedmarrelacopiedesfichierssurledisque.

    Enfonctiondevoschoixetdutypedesupportutilispourlinstallation,vousserezinvitaucoursdelacopiefournir

    - 6 - ENI Editions - All rigths reserved

  • leoulesdisquessuivants.

    Aprsquelquesminutesdecopie,lcransuivantvousconfirmelinstallationdeladocumentationMSDN.

    Laderniretapeconsistevrifier,auprsdeMicrosoft,silexistedescorrectifspourlesproduitsquevousvenezdinstaller. Cette tape ncessite un accs Internet avec bande passante suffisante car le volumedinformationsrecevoirpeuttreimportant(Modem56 Ksabstenir).SivousnedisposezpasdaccsInternet,vouspouvezignorercettetapeettoutdemmedisposerdunproduitoprationnel.

    3.Premierdmarrage

    UnraccourcicrautomatiquementparleprogrammedinstallationvouspermetdelancerVisualStudio.

    Lorsdupremierdmarrage,VisualStudiovousproposedepersonnaliser lenvironnementde travail.En fonctiondevotreprfrencepourun langageparticulier,VisualStudio configure lenvironnementavec lesoutils adapts.Cetteconfigurationpeut,parlasuite,tremodifieparlemenuOutils Importationetexportationdeparamtres.

    - 7 - ENI Editions - All rigths reserved

  • VisualStudioappliqueensuitevoschoixavantdedmarrer.

    Nousallonsmaintenantexplorerlesoutilsnotredisposition.

    - 8 - ENI Editions - All rigths reserved

  • Dcouvertedelenvironnement

    1.Pagededmarrage

    Cette page est affiche chaque lancement deVisual Studio. Elle vous permet daccder rapidement aux derniersprojetssurlesquelsvousaveztravaill,decrerunnouveauprojetoudouvrirunprojetexistant.LarubriqueMiseenroutevousproposedesliensverslesrubriquesdaideutilespourunepriseenmainrapidedeVisualStudio.Siuneconnexion Internet est disponible, la zone Informations pour les dveloppeurs Visual Studio contient desinformationsenprovenancedusiteMicrosoft.

    LURL contacte pour renseigner cette rubrique est configurable par lemenuOutils Options. Aprs cration dunnouveauprojetououverturedunprojetexistant,lenvironnementVisualStudioestdmarr.

    2.EnvironnementVisualStudio

    Lenvironnementestcomposdetroistypesdlments:

    l unezonedebarredemenusetdebarresdoutils

    l unezonecentraledetravail

    l unemultitudedefentresconstituantlesdiffrentsoutilsnotredisposition.

    Lensembleprsentetoutdemmeunaspectcharget,aprslajoutduneoudeuxbarresdoutilsetlapparitiondequelquesfentressupplmentaires,lazonedetravaildevientrestreintesurtoutsuruncranclassiquede15pouces.

    - 1 - ENI Editions - All rigths reserved

  • Heureusement,plusieurssolutionssontdisponiblespourgrernotreespacedetravail:

    l lancragedesfentres

    l lemasquageautomatiquedesfentres

    l lutilisationdonglets.

    Lancragedefentresnepermetpasdegagnerdelaplacesurlcranmaisnouspermetdaccrocher,uneborduredelcranouduneautrefentre,telleoutellefentre.Ilestgalementpossiblederendreflottantechaquefentre,endouble cliquant sur sa barre de titre ou en utilisant lemenu contextuel. La fentre peut tre ensuite dplace ouancre sur une autre bordure. Pour nous guider dans lancrage dune fentre, Visual Studio affiche, pendant ledplacementdunefentre,desguidespermettantdechoisirlabordureoeffectuerlancrage.

    Lesicnes placesenpriphriedelcranpermettentlancragesurlabordurecorrespondantedelcran.Les

    - 2 - ENI Editions - All rigths reserved

  • icnes apparaissantaucentredelafentresurvole,contrlent lancragesursesborduresousous

    formedunongletsupplmentairepourlafentre.

    Plusintressantespourgagnerdelaplacesurlcran,lesfentresmasquablesnesontvisiblesquesilecurseurdelasourissetrouveaudessusdeleursurface.Sinon,seuleunezonedonglets,situeenborduredelenvironnementdedveloppement, permet de faire apparatre son contenu. Pour conserver une fentre toujours visible, il suffit de labloquerenutilisantlapunaiseprsentesursabarredetitre .

    Enfin, lutilisationdongletspermetdepartagerunemmezonecranentrediffrentes fentresetceniveau, lesconcepteursdeVisualStudioenontussansmodration.

    - 3 - ENI Editions - All rigths reserved

  • Lesoutilsdisponibles

    Regardonsunpeuplusendtaillesdiffrentesbarresdoutilsetfentresquisontnotredisposition.

    1.Lesbarresdoutils

    PasmoinsdetrentebarresdoutilsdiffrentessontdisponiblesdansVisualStudio.Laffichagedechacunedellespeuttrecontrlparlemenucontextuel,obtenuenfaisantunclicdroitsurlabarredemenusprincipale.

    Ilestbiensrinutiledafficherlatotalitdesbarresdoutilssimultanmentmaisseulementlesplusutiles.

    Standard

    diteurdetexte

    diteurdebotesdedialogue

    Disposition

    Dboguer

    Les autres barres disponibles seront affiches, au coup par coup, en fonction de vos besoins afin dviter desurchargervotrecran.

    Lesfentresdisponiblessontgalementasseznombreusesetnousallonsdcouvrirlespluscourantes.

    2.Laboteoutils

    Cest partir de la bote outils que nous allons choisir les lments utiliss pour la conception de linterfacedelapplication.

    - 1 - ENI Editions - All rigths reserved

  • Laboteoutilsestorganiseparrubriquepermettantdefacilementretrouverlescontrles.

    Chacunpourrapersonnalisersaboteoutilsenyajoutantparexemple,descontrlesnondisponiblespardfaut.Ilpeut tre judicieux, avant dajouter des contrles votre bote outils, de crer une nouvelle rubrique pour leshberger.Pourcela,affichezlemenucontextueldelaboteoutils(encliquantavecleboutondroitdelasourissurlaboteoutils),choisissezloptionAjouterunongletpuisdonnezunnomlanouvellerubriqueainsicre.Aprsavoirslectionn cette nouvelle rubrique, vous pouvez ensuite y ajouter des contrles. Affichez nouveau le menucontextueldelaboteoutilspuischoisissezloptionChoisirleslments.

    La liste des contrles (Com ou .NET), disponibles sur la machine, est alors prsente, vous permettant ainsi deslectionnerlescontrlesajouterdanscetterubriquedelaboteoutils.Laconfigurationdelaboteoutilsnestpaslieauprojetactifmaislenvironnementluimme(laboteoutilsseraidentiquequelquesoitleprojetouvert).

    3.Lexplorateurdeserveurs

    LexplorateurdeserveursestdisponibleparlemenuAffichage Explorateurdeserveursouparleraccourciclavier[Ctrl][Alt]S.Ilsaffichesurunnouvelongletdelafentreassocielaboteoutils.

    - 2 - ENI Editions - All rigths reserved

  • La majorit des applications a besoin pour fonctionner dautres machines prsentes sur le rseau. Il est doncncessaire davoir, pendant la phase de dveloppement dune application, la possibilit daccder aux ressourcesdisponiblessurdautresmachines.

    LlmentleplusfrquemmentutilisdelafentreexplorateurdeserveursseracertainementlarubriqueConnexionsdedonnes.

    EllepermetnotammentlagestiondesobjetsdisponiblessurleserveurSQL(tables,vues,procduresstockes).

    Lexplorateur de serveurs permet galement de grer les services fonctionnant sur les machines aussi bien parlinterface graphique que par le code. Il offre la possibilit de visualiser lactivit des machines en analysant lescompteursdeperformanceouen rcuprant les informationsdans lesdiffrents journauxdvnements.Unsimpleglisserdplacerentre lexplorateur de serveurs et une fentre en cours de conception gnre automatiquement lecode permettant de manipuler cet lment dans lapplication. Par exemple, le dplacement dun compteur deperformanceaudessusdunefentregnrelecodesuivant :

    Friend WithEvents perfCptMemoire As System.Diagnostics.PerformanceCounter Me.perfCptMemoire = New System.Diagnostics.PerformanceCounter Me.perfCptMemoire.CategoryName = "Mmoire" Me.perfCptMemoire.CounterName = "Kilo-octets disponibles" Me.perfCptMemoire.MachineName = "portableTG"

    4.Lexplorateurdesolutions

    Lexplorateur de solutions permet laffichage des lments constituant une solution et la modification de leursproprits.

    - 3 - ENI Editions - All rigths reserved

  • Lutilisationdelexplorateurdesolutionsestprsentendtaildanslechapitreconsacrlorganisationduneapplication.

    5.Laffichagedeclasses

    Laffichage de classes est accessible par le menu Affichage Autres fentres Affichage de classes ou par leraccourciclavier[Ctrl][Shift]C.Ilpartagesazonecranaveclexplorateurdesolutions.

    - 4 - ENI Editions - All rigths reserved

  • Laffichagedeclassepermetdavoirunevisionlogiquedunesolutionenprsentant lesdiffrentesclassesutilisesdanscettesolution.

    6.Lafentredeproprits

    Lafentredepropritspeuttreaffichepartroismthodes :

    l EnutilisantlemenuAffichage Fentredeproprits.

    l Parlatouchedefonction[F4].

    l Par loptionPropritsdumenucontextueldisponibleencliquantavec leboutondroitsurundeslmentsconstituantunprojet(lmentgraphiquedelinterfaceutilisateur,fichieroudossierduprojet).Lafentredepropritsadapteautomatiquementsoncontenuen fonctionde llmentslectionnetpermetdemodifiercescaractristiques.

    - 5 - ENI Editions - All rigths reserved

  • Les lments dont vous pouvez modifier les caractristiques peuvent tre slectionns directement dans la listedroulanteousurlinterfacedelapplication.

    Deuxprsentationssontdisponiblespourlalistedesproprits :

    LemodeAlphabtiquequevousactivezencliquantsurlicne .

    LemodeParcatgoriequevousactivezencliquantsurlicne .

    7.Laidedynamique

    LaidedynamiquedeVisualStudioslectionnelesrubriquesdaidequipourraientvoustreutilesenfonctiondevotreactivitoudescommandesetoutilsutiliss.

    Dans lexemple ci contre, un bouton de commande vient juste dtre slectionn sur linterface. Les diffrentesrubriquesproposessontdonccentressurlobjetboutondecommande.

    - 6 - ENI Editions - All rigths reserved

  • 8.Lalistedestches

    CettefentrevavouspermettrederemplacerlesdizainesdePostItcollssurleborddevotrecran.Eneffet,vouspourrezgrercequilrestefairedansvotreprojetentenantjourunelistedesmodificationsapporterdansvotrecode.

    Lesinformationsprsentesdanslalistepeuventavoirdeuxorigines:

    l Lescommentairesinsrsdansvotrecode.

    l Lesinformationssaisiesdirectementdanslafentre.

    Vouspouvezplacerdansvotrecodedescommentairesquiapparatrontpar lasuitedans la listedestches.Cettetechniquevouspermetparexempledindiquerunemodificationeffectuerplustarddansvotrecode.

    Ilsuffitquelecommentairecommencepartodo,pourtreensuitereprisautomatiquementdanslalistedestches.

    Vous pouvez galement saisir directement les informations dans la liste des tches. Vous devez basculer verslaffichagedestchesutilisateurenutilisantlazonedelistedisponiblesurlabarredetitredelalistedestches.

    Lajoutdunetchesexcuteensuiteparlebouton ,disponibledanslalistedestches.

    Vouspouvezalorsspcifierunedescriptionetuneprioritpourlanouvelletcheencliquantsurlacolonnedegauchedelalistedestches.Troisniveauxdeprioritsontdisponibles :

    l Haute

    l Normale

    l Basse.

    Pourchaquetche,unecasecocherpermetdindiquerquelleatralise.Sadescriptionapparatalorsbarredanslalistedestches.Ilnyapas,pourlestchesutilisateur,deliaisonautomatiqueavecuneportionquelconquedecode.

    9.Lalistedeserreurs

    - 7 - ENI Editions - All rigths reserved

  • Le code que vous saisissez est analys en continu par Visual Studio et les ventuelles erreurs de syntaxe sontreprisesparVisualStudiodanslafentreListederreurs.

    Pourallerdirectementsur la ligneouneerreurdesyntaxeestapparue, ilsuffitdedoublecliquerdansla listesurllmentcorrespondant(danslexempleprcdent,doublecliquersur )attendue pouratteindrelaligne6).Vousnavezdoncnulbesoindedemanderlacompilationcomplteducodepourtraquertoutesleserreursdesyntaxe.Dsquelerreurestcorrige,elledisparatautomatiquementdelalistedeserreurs.

    Lesboutonserreur,avertissement,messageactiventunfiltragesurlesmessagesaffichsdanslalistedeserreurs.

    10.Lafentredditiondecode

    Cest certainement dans cette fentre que nous allons passer le plus de temps. Elle propose de nombreusesfonctionnalitspermettantdautomatiserlesactionslespluscourantes.

    a.LesSnippets

    Les Snippets sont desmorceaux de code qui peuvent trs facilement tre incorpors dans un fichier source. Ilspermettentdcrire trs rapidementdesportionsdecodecorrespondantdessituationscourantes.VisualStudiopropose,debase,unemultitudedeSnippets.TroissolutionssontdisponiblespourinsrerunSnippet :

    l UtilisezloptionInsrerunextraitdumenucontextueldelditeurdecode.

    l Utilisezlescombinaisonsdetouches[Ctrl]Kpuis[Ctrl]X.

    l SaisissezlenomduSnippetpuislatouche[Tab].

    Pour les deux premires mthodes, Visual Studio vous propose de choisir dans une liste le Snippet qui vousintresse.CertainesportionsdecodeduSnippetpeuventtrepersonnalises.Cesportionsdecodesontsurlignesenbleuclair.LamodificationdunedecesportionsdecoderpercutelechangementsurtouteslesoccurrencesdansleSnippet.

    Danslexemplesuivant,unSnippetatutilispourajouterunenouvelleproprituneclasse.

    LamodificationdesvaleursnewPropertyValue,IntegeretNewPropertyseraeffectueencascadesurlensembleducodeduSnippet.

    VouspouvezgalementconcevoirvospropresSnippets.VousdevezpourcelacrerunfichierXMLquivacontenirlecodeduSnippet.Cefichierdoitavoirlextension.snippet.

    Pourvousaiderdans la crationdunSnippet,Microsoft a prvuunSnippet.Vouspouvez lincorporerdansvotrefichierXMLparlemenucontextuelInsrerunextrait Snippet.

    - 8 - ENI Editions - All rigths reserved

  • Vousdevezalorsobtenirledocumentsuivant:

    title author shortcut description SurroundsWith Expansion $name$ $selected$ $end$]]>

    Avantdevoir comment complter ce fichier, vousdevezapporterunepetitemodification sa structure. Les troispremireslignesdoiventtremodifiesafindobtenirlaformesuivante:

    Vousdevezgalementajouterlabalisedefermeturesuivantelafindufichier.

    VouspouvezensuitepersonnaliservotreSnippet.Dansunpremiertemps,vousdevezmodifierlasectionHeaderenremplaantlesvaleursdesdiffrentesbalises.

    Parcours dun tableau Thierry tablo ce Snippet ajoute une boucle permettant de parcourir un tableau Expansion

    La sectionDclarations permet ensuite de crer les paramtres utiliss dans le Snippet. Pour chaque paramtre,vousdevezcrerunesectionetfournirunnompourleparamtreetunevaleurpardfaut.

    nomtableau leTableau typeTableau TypeDuTableau

    - 9 - ENI Editions - All rigths reserved

  • tailleTableau tailleDuTableau

    VousdevezensuiteindiquerpourquellangagevotreSnippetestprvu.

    Puis,enfin,dfinirdans labaliseCDATA lecodeduSnippet.Danscecode,vouspouvezutiliser lesparamtresduSnippetenlesencadrantentredeuxcaractres$.

    VousenregistrezensuitelefichieretvotreSnippetestprt.IlconvientdemaintenantlintgrerdansVisualStudio.Pourcela,vousactivezlegestionnairedeSnippetparlemenuOutils Gestionnairedesextraitsdecode.

    LeboutonImporterpermetdajoutervotreSnippetceuxdjdisponiblesdansVisualStudio.

    AprsavoirslectionnlefichiercontenantleSnippet,vousdevezchoisirlarubriquedanslaquelleilserarang.

    - 10 - ENI Editions - All rigths reserved

  • VotreSnippetestmaintenantdisponibledanslditeurdecode.

    Ilnevousresteplusqupersonnaliserlecodegnr.

    b.Suividesmodifications

    Vous pouvez visualiser les portions de code ayant t modifies depuis le dmarrage de Visual Studio. Lesmodificationssontidentifiesparuneborduredecouleurapparaissantdanslamargedelditeurdecode.

    l Unebordurejauneindiquequelecodeatmodifimaispasencoresauvegard.

    l Unebordureverteindiquequelecodeatmodifietsauvegard.

    - 11 - ENI Editions - All rigths reserved

  • Vouspouvezaussifacilementrenommerunlmentetpropagerautomatiquementlamodificationauresteducode.Lutilisation typique est le changement de nom dune variable ou dune classe. Vous ne devez pas renommer lavariabledirectementdanslecodemaisutiliserlabotededialogueafficheenutilisantloptionRenommerdumenucontextueldelditeurdecodesurlenomactueldelavariable.

    Lamodificationraliseparlintermdiairedecettebotededialogueestrpercutesurlensembleducodeocettevariableestutilise.

    c.Utilisationdemacros

    Comme la majorit des outils Microsoft, Visual Studio est maintenant capable de grer les macros. Elles vouspermettentde facilementenregistrerunesriedactionsexcutesdansVisualStudioetde lesreproduireparunsimpleclicsurunboutondunebarredoutils.

    Nous allons crer trois macros permettant lajout dinstruction Imports pour les espaces de nomsSystem.Data.SqlClient, System.Data.OleDb et System.Data.Odbc. Ces macros seront ensuite associes troisboutonsdunenouvellebarredoutils.

    Lapremiretapeestdenregistrerlesmacroscommeonenregistreunesquenceavecunmagntophone.LemenuOutils Macros EnregistrerTemporaryMacrodclenchelenregistrementdevosactions.Vouspouvezalorssaisirle code dsir, puis arrter lenregistrement grce la barre doutils affiche au dbut de lenregistrement de lamacro.

    VousdevezensuitesauvegarderlamacroparlemenuOutils Macros SauvegarderTemporaryMacro.

    Effectuezcesoprationspourchacunedestroislignesdecodesuivantesendonnantunnomdiffrentchacunedesmacros.

    Imports System.Data.SqlClient Imports System.Data.OleDb Imports System.Data.Odbc

    Pour rendreplus facile lutilisationde cesmacros, nousallons les regrouper surunenouvelle barredoutils.VousdeveztoutdabordcrerunenouvellebarredoutilsenutilisantloptionPersonnaliserdumenucontextueldisponiblesurunebarredoutilsexistante.

    - 12 - ENI Editions - All rigths reserved

  • La barre doutils estmaintenant disponiblemais ne contient aucun bouton. Vous pouvezmaintenant ajouter vosboutonslaidedelabotededialoguedepersonnalisationdelabarredoutils.

    Lajoutdesboutonssefaiteneffectuantunglisserdplacerdelacommandeverslabarredoutils.Lescommandesapparaissentsousformedetextesurlabarredoutils.Avantdefermerlabotededialoguedepersonnalisation,vousdevez associer des images aux diffrentes commandes en utilisant loptionModifier limagedu bouton dumenu

    - 13 - ENI Editions - All rigths reserved

  • contextueldechaquecommande.

    Choisissez galement pour chaque bouton le style par dfaut. Votre barre doutils est maintenant prte treutilise.

    Maintenantquevoustesfamiliarisaveclenvironnementdedveloppement,vousdevezvousfamiliariseraveclecodeVisualBasic.

    - 14 - ENI Editions - All rigths reserved

  • Lessolutions

    1.Prsentation

    Pourvousaiderdanslacrationdapplications,VisualStudiovousproposeplusieurslmentsservantregrouperlescomposantsduneapplication.Leconteneurdeplushautniveauestlasolutiondanslaquellevouspourrezplacerunouplusieursprojets.Cesprojetscontiendront,leurtour,tousleslmentspourquelecompilateursoitcapabledegnrer le fichier excutable ou dll du projet. Lexplorateur de solutions va nous permettre demanipuler tous ceslments.

    2.Crationdunesolution

    LacrationdunesolutionestautomatiquelorsquevousdmarrezunnouveauprojetdansVisualStudio.Lorsdelacrationdunouveauprojet,ilvousserademandplusieursinformationsleconcernant.

    Parlintermdiairedecettebotededialogue,vousallezfournirlesinformationssuivantes :

    l laversionduFrameworkncessairepourutiliserlapplication,

    l lelangageutilispourdvelopperleprojet,

    l letypedeprojetcrer,

    l lenomduprojet,

    l lerpertoiredebaseoserontstockslesfichiers,

    l lenomdelasolution,

    l lacrationdunrpertoirepourlasolution.

    - 1 - ENI Editions - All rigths reserved

  • Aprsvalidationdecettebotededialogue,lexplorateurdesolutionsvousprsentelanouvellesolutionsurlaquellevousallezpouvoir travailler.Tous les fichiersdevotre solutionsontdj crset sauvegardssurvotredisque,lemplacementquevousavezspcifi.

    Unesolutioncontiendraaumoinslesfichierssuivants :

    l Unfichieraveclextension.sln,quiestlefichierdeconfigurationdelasolution.Cefichiercontiententreautresla listede tous lesprojetscomposant lasolution. Ilestcompltau furetmesurequevousajoutezdesnouveauxprojetslasolution.

    l Unfichieraveclextension.suo,enregistrantlesoptionsassocieslasolution.Cefichierpermetderetrouvercesoptions.

    l Un fichier pour le projet, portant lextension .vbproj. Ce fichier contient toutes les informa tions deconfigurationduprojetavecnotammentlalistedesfichiersconstituantleprojet,lalistederfrencesutilisesparceprojet,lesoptionsutiliserpourlacompilationduprojet,etc.

    l De nombreux fichiers ayant lextension .vb qui vont contenir le code source de toutes les classes, feuilles,modulesconstituantleprojet.

    l Unfichier.resxassocichaquefeuilledevotreapplication.CefichierauformatXMLcontiententreautreslalistedesressourcesutilisessurcettefeuille.

    l Aufinal,unesolutioncontientdenombreuxautresfichiersenfonctiondeslmentsutilissdansvotreprojet(accsunebasededonnes,fichiershtml...).

    3.Modificationdunesolution

    Lessolutionstantdesconteneurs,ilestbiensrpossibledegrerleurslments.Vouspouvezajouter,supprimer,renommerdeslmentsdanslasolution.

    a.Ajouterunprojet

    Plusieurspossibilitssontdisponiblespourlajoutdunprojet :

    n Si vous souhaitez crer unnouveauprojet, choisissez loptionNouveauProjet dumenuFichier Ajouter.Unebotededialoguevousproposealorsdeconfigurerlescaractristiquesdunouveauprojet.Cettebotededialoguevousproposenotammentunrpertoirepardfautpourlenregistrementduprojet.Sicerpertoirenecorrespondpaslemplacementovousdsirezenregistrerleprojet,vouspouvezslectionnerunnouvelemplacement.Cetteoprationseraraliserpourchaqueprojetquevousajouterez. Ilpeuttre intressantdemodifier lecheminpropospardfautpour lenregistrementdesprojets.Pourcela,ouvrez lemenuOutilsOptions,puisdans labotededialoguechoisissezloptionProjetsetsolutionsetmodifiezlarubriqueVisualstudioprojectslocation.

    n Sivoussouhaitezajouterunprojetdjexistant,vousdevezutiliser loptionProjetexistantdumenuFichier Ajouter.Unebotededialoguedeslectiondefichiersvouspermetalorsdechoisirlefichier.vbprojduprojetquevoussouhaitezajouterlasolution.

    noterqueleprojetrestesonemplacementdoriginesurledisque.

    b.Supprimerunprojet

    n Poursupprimerunprojet,utilisezlemenucontextueldelexplorateurdesolutionseneffectuantunclicdroitsurlenomduprojetquevoussouhaitezsupprimerdelasolution.

    Leprojet est liminde la solution,mais resteenregistr sur ledisque. Pour le supprimerdfinitivement,utilisezlexplorateurWindowspoursupprimerlesfichiersdeceprojet.Sivousneffacezpaslesfichiers,leprojetpeut,parlasuite,tredenouveauajoutunesolution.

    c.Renommerunprojet

    - 2 - ENI Editions - All rigths reserved

  • n Pourrenommerunprojet,utilisezlemenucontextueldelexplorateurdesolutionseneffectuantunclicdroitsurlenomduprojetquevoussouhaitezrenommer.

    Lenomduprojetdevientalorsmodifiabledanslexplorateurdesolutions.Cettemodificationconcerneuniquementlenomdufichier.vbprojassociauprojet.Ellenemodifieenaucuncaslenomdurpertoiredanslequelsetrouventlesfichiersduprojet.

    d.Dchargerunprojet

    Lorsque vous souhaitez exclure temporairement unprojet duprocessus degnration ou rendre lditionde sescomposantsimpossible,vouspouvezdchargerleprojetdelasolutiongrceloptionDchargerleprojet.

    Unprojetdchargnestpasretirdelasolutionmaissimplementmarqucommeindisponible.

    Leprojetpeut,biensr,trerhabilitdanslasolutionenutilisantloptionRechargerleprojetdumenucontextuel.

    4.Organisationdunesolution

    Si vous travaillez avec une solution contenant de trs nombreux projets, vous pouvez ajouter un niveau dehirarchisationencrantdesdossiersdesolutions.Ceuxcipermettent le regroupement logiquedeprojetsauseindunesolution.

    n Pourcela,crez,dansunpremiertemps,lesdossiersdanslasolution,puisorganisezlesprojetsdanscesdossiers.

    Lesdossiersdesolutionsnecrentpasdedossiersphysiquessurdisque,ilssontjustedesconteneurslogiqueslintrieurdelasolution.

    a.Crationdundossierdesolution

    Undossierdesolutionpeuttrecrpartroismthodesdiffrentes.

    n Pourtoutescesmthodes,slectionnezlasolutiondanslexplorateurdesolution.

    n Ensuite,utilisezsoitlebouton delabarredoutilsdelexplorateurdesolution,soitlemenuProjet Ajouterunnouveaudossierdesolutionouencorelemenucontextueldisponibleparunclicdroitsurlenomdelasolution.

    - 3 - ENI Editions - All rigths reserved

  • Quellequesoitlamthodeutilise,vousdevezfournirunnompourledossiercr.

    b.Crerunprojetdansundossier

    La cration dun projet dans un dossier de solution est identique la cration dun projet directement dans lasolution.

    n Slectionnezsimplement,aupralable,ledossierdanslequelvoussouhaitezcrerleprojet.

    c.Dplacerunprojetdansundossier

    Il arrive frquemment que la ncessit dorganiser une solution avec des dossiers se fasse sentir alors que desprojetsexistentdjdanslasolution.

    n Crez,danscecas,lesdossierspuiseffectuezunglisserdplacerdesprojetsdanslesdossierscorrespondants.

    5.Ledossierlmentsdesolution

    Lessolutionscontiennentprincipalementdesprojets,cependantilestpossibledavoir,dansunesolution,desfichiersgrsindpendammentdunprojetparticuliermaisassocislasolution.Cestlecas,parexemple,dunfichiericnequevoussouhaitezutiliserdansplusieursprojetsdelasolution.Cesfichierssontappelslmentsdesolutionetsontplacsdansundossierspcifiquedelasolution.

    n Pourajouterunnouvel lmentde solution,utilisez lemenu contextuel sur lenomde la solutionen choisissantloptionAjouter NouvellmentouloptionAjouter lmentexistant.

    Lenouvellmentestalorsajoutdansledossierlmentsdesolution.Ilestnoterquecedossiernexistepas,pardfaut, dans une solution mais il est cr automatiquement lors de lajout du premier lment de solution. Leslmentsdesolutionpeuventensuitetremodifisavecunditeurspcifiqueautypedefichiercr.

    6.LedossierFichiersdivers

    Vouspouvez,parfois,vouloirvisualiser lecontenudunfichieralorsquevoustravaillezsurunesolution,commeparexemplelecompterendudunerunion.Cefichiernedoitpasfairepartiedemanirepermanentedelasolution.VouspouvezlouvriravecunditeurexterneetbasculerentreVisualStudioetcetditeurexterne,maisilestpluspratiquedevisualiserlefichierdirectementdanslenvironnementVisualStudio.

    n UtilisezloptionOuvrirunfichierdumenuFichier.

    Labotededialoguevouspermetdechoisirlefichierouvrir.Enfonctiondutypedefichier,unditeurpardfautluiseraautomatiquementassocipourpermettresamodification.Ilestparfoisutiledepouvoirchoisirlditeurassociun fichier. Pour cela, le boutonOuvrir de la bote de dialogue dispose dunmenu proposant loptionOuvriravecpermettantlechoixdelditeurassociaufichier.

    - 4 - ENI Editions - All rigths reserved

  • Labotededialoguesuivantevousproposelalistedesditeursdisponibles.

    n Choisissezlditeurassociaufichiersurlequelvoussouhaiteztravailleretvalidez.

    LefichierestalorsdisponibledansledossierFichiersdiversdelasolution.CommeledossierElmentsdesolution,ledossierFichiersdiversnexistepas,pardfaut,danslasolutionmaisestcrautomatiquementlorsdelouverturedunfichier.

    IlseravisibledanslexplorateurdesolutionsuniquementsiloptioncorrespondanteestactivedanslenvironnementVisual Studio. Pour cela, ouvrez le menu Outils Options, puis dans la bote de dialogue, choisissez loptionEnvironnementDocumentsetactivezloptionAfficherlesfichiersdiversdanslexplorateurdesolutions.Commeledossier lments de solution, ce dossier est un dossier "logique" et ne correspond pas un emplacement sur ledisque.

    7.Configurationdunesolution

    Les solutions disposent de proprits permettant de configurer leurs comportement lors de la gnration ou delexcution de lapplication. Ces diffrentes proprits sont regroupes dans une bote de dialogue accessible parloptionPropritsdumenucontextueldunesolution.Quatrecatgoriesdepropritssontdisponibles :

    - 5 - ENI Editions - All rigths reserved

  • l Projetdedmarrage

    l Dpendancesdeprojets

    l Fichierssourcespourdbogage

    l Configurations.

    Regardonsdansledtailchacunedentreselles.

    a.Configurationduprojetdedmarrage

    Cettepagedepropritsdelasolutiondtermine,parmilesprojetsdisponibles,celuiouceuxlancsaudmarragedelasolution.

    Deuxoptionssontdisponibles :

    Projetdedmarrageunique

    Unecomboboxproposela listedesprojetsdisponiblesdans lasolutionparmi lesquelsvousdevezchoisirceluiquiseraexcutaudmarragedelasolution.Ceprojetestparlasuitesignaldanslexplorateurdesolutionparsonnom apparaissant en gras. Cette slection peut galement se faire par le menu contextuel de lexplorateur desolutionsenchoisissantloptionDfinircommeprojetdedmarrage.

    Plusieursprojetsdedmarrage

    Untableauprsentelalistedetouslesprojetsdisponiblesdanslasolution.Pourchacundeux,vousdevezindiquerlactionexcuterlorsdulancementdelapplication.Leschoixpossiblessont :

    l Aucuneaction

    l Dmarrerleprojet

    l Excuterleprojetsansdbogage.

    Sivouschoisissezdedmarrerplusieursprojetsaulancementdelasolution,vousdevezgalementindiquerlordredans lequel cesprojets serontdmarrs.Cet ordre corresponden fait lordre des projets dans le tableau. Lesboutons et permettentdemodifiercetordre.

    - 6 - ENI Editions - All rigths reserved

  • b.Dpendancesdeprojet

    Lagnrationdecertainsprojetsncessiteaupralablelagnrationdautresprojets.Cestlecas,parexemple,sivous demandez la gnration dun projet qui utilise une rfrence vers un autre projet : celuici est alors unedpendanceduprojetinitial.

    Lapagedepropritssuivantepermetdeconfigurercesdpendances.

    n Dans la listedesprojets, slectionnez celuipour lequel vous souhaitez configurer lesdpendances. Lesautresprojetsdelasolutionsontalorslists,avec,pourchacundeux,unecasecocher.Lorsdelagnrationduprojet,tous les projets dont il dpend seront automatiquement rgnrs, sils ont t modifis depuis la derniregnrationousilsnontjamaistgnrs.

    Certainesdpendancesnepeuventtremodifies,lacasecocherapparatalorsengris.

    Cest en gnral le cas, lorsquun projet possde une rfrence sur un autre projet ou que lajout dunedpendancerisquedecreruneboucle.Parexemple,leprojet1dpendduprojet2etinversement.

    LesdpendancesdeprojetpeuventtregalementconfiguresparlemenucontextueldelexplorateurdesolutionsavecloptionDpendancesduprojet.

    c.Fichierssourcepourledbogage

    Lorsdudbogageduneapplication,lenvironnementVisualStudioabesoindaccderaufichiersourceducodequilest en train de dboguer. Cette page de proprit permet de spcifier les rpertoires qui seront analyss larechercheducodesource.

    - 7 - ENI Editions - All rigths reserved

  • LalisteRpertoirescontenantducodesourceaffichelenomdesrpertoiresquiserontscrutslarecherchedecode source, pendant le dbogage dune application. Cette liste peut tre gre par la barre doutils dont lesboutonspermettentde :

    Vrifierlexistencedurpertoire.

    Ajouterunnouveaurpertoire.

    Supprimerlerpertoireslectionndelaliste.

    Dplacerlerpertoireverslebasdanslaliste.

    Dplacerlerpertoireverslehautdanslaliste.

    LalisteNepasrecherchercesfichierssourcesexclutcertainsfichiersdelarecherche.

    d.Configurations

    Lesoptionsdeconfigurationpermettentdedfinircommentdiffrentesversionsdunesolutionetdesprojetsquilacomposent seront gnres. Par dfaut, deux configurations sont disponibles pour une solution dans VisualStudio : laconfigurationDebugetlaconfigurationRelease.

    Pourchacundesprojetsprsentsdanslasolution,lesdeuxconfigurationsserontgalementdisponibles.Auniveauduprojet, lesconfigurationspermettentdedfinirdesoptionsdecompilations.LaconfigurationDebugestutilisependantledveloppementetlestestsduprojet.LaconfigurationReleaseestutilisepourlagnrationfinaleduprojet.

    - 8 - ENI Editions - All rigths reserved

  • Nous avons en fait un systme trois niveaux : pour chaque configuration de solution, on indique quelleconfiguration utiliser pour chaque projet et, pour chaque configuration de projet, on spcifie des options decompilation.Lesoptionsdecompilationsontmodifiablesauniveaudespropritsduprojet.

    - 9 - ENI Editions - All rigths reserved

  • Lesprojets

    Lesprojetssontlesconteneursdedeuximeniveaudansuneapplication.Ilssontutilisspourorganiserlogiquement,grer,gnreretdboguerlescomposantsduneapplication.Lagnrationdunprojetproduit,engnral,unfichierexcutableouunebibliothquedll.Unprojetpeuttretrssimpleetnecontenirquedeuxlments,unfichiersource(.vb)etlefichierdeprojet(.vbproj).Plusgnralement,lesprojetscontiennentdenombreuxfichierssource,desscriptsdebasededonnes,desrfrencesversdesservicesWeb,desressourcesgraphiques,etc.

    VisualStudioproposepardfautunensembledemodlesdeprojets.Cesmodlesfournissentunpointdedpartpourlamajoritdesbesoinsdansledveloppementduneapplication.Pourdescasplusspcifiques,vouspouvezcrervospropresmodlesdeprojet.

    1.Crationdunprojet

    n Pourlacrationdunprojet,activezlemenuFichier Nouveauprojet.Unebotededialoguevousproposealorsdechoisirlescaractristiquesdunouveauprojet.

    n Choisissez tout dabord la version du Framework pour laquelle vous souhaitez dvelopper le projet. La versionchoisieinfluencelestypesdeprojetsquevouspouvezcrer.

    n Choisissezensuitelelangagedanslequelvoussouhaitezdvelopperleprojet.LeschoixdisponiblesdpendentdeslangagesinstallsdansVisualStudio.Dansnotrecas,nouschoisissonsbiensrVisualBasic.

    n Choisissez ensuite le type de projet que vous souhaitez dvelopper. La bote de dialogue propose alors lesdiffrentsmodlesdeprojetdisponiblesenfonctiondutypedeprojetchoisi.

    n Aprsavoirfaitvotrechoix,indiquezunnompourleprojet,unemplacementpourlesfichiersduprojetetunnompourlasolution.Lemodleslectionnestalorsutilisparlassistantpourcrerleslmentsduprojet.

    Aprsquelquesinstantsleprojetestdisponibledanslexplorateurdesolutions.

    n Personnalisezmaintenantlbauchecre.

    a.Lesmodlesdeprojets

    DenombreuxmodlesdeprojetssontdisponiblesdansVisualStudio.Cesmodlesfournissentleslmentsdebasencessairespourdvelopperchaquetypedeprojet.Ilscontiennenttoujoursaumoins lefichierdeprojet,plusunexemplaire de llment le plus utilis pour le type de projet correspondant par exemple, pour un projet debibliothqueclasse,unfichiersourcecontenantunebauchedeclasseestcr.Lesmodlesfournissentgalementdes rfrences et des importations par dfaut pour les bibliothques et les espaces de noms les plus utiles enfonctiondutypedeprojet.

    Cemodledeprojetestcertainementleplusutilis.IlpermetledveloppementdapplicationWindowsstandards.Lemodleajouteauprojetleslmentssuivants :

    l Un fichier AssemblyInfo.vb utilis pour la description de lapplication avec notamment les informationsconcernantlaversion.

    l Unformulairedebaseavecsonfichiersourceform1.vb.

    Lesrfrencessuivantessontautomatiquementajoutesetimportes :

    l System

    l System.Core

    l System.Data

    ApplicationWindows

    - 1 - ENI Editions - All rigths reserved

  • l System.Data.DataSetExtensions

    l System.Deployment

    l System.Drawing

    l System.Windows.Forms

    l System.Xml

    l System.Xml.Linq

    Cemodledeprojetestutilisablepourcrerdesclassesetdescomposantsquipourrontparlasuite,trepartagsavecdautresprojets.Leslmentssuivantssontautomatiquementajoutsauprojet :

    l UnfichierAssemblyInfo.vbutilispourladescriptionduprojetavecnotammentlesinformationsconcernantlaversion.

    l Uneclassedebaseavecsonfichiersourceclass1.vb.

    Lesrfrencessuivantessontautomatiquementajoutesetimportes :

    l System

    l System.Core

    l System.Data

    l System.Data.DataSetExtensions

    l System.Xml

    l System.Xml.Linq

    Commelemodleprcdent,cetypedeprojetpermetdecrerunebibliothquedeclassesutilisabledansdautresprojets.Cettebibliothqueestplus spcifique,puisquelle est ddie la crationde contrles,utilisablespar lasuitedansuneapplicationWindows.Cescontrlestendent laboteoutilsdjdisponibledanslesapplicationsWindows.Leslmentssuivantssontautomatiquementajoutsauprojet :

    l UnfichierAssemblyInfo.vbutilispourladescriptionduprojetavecnotammentlesinformationsconcernantlaversion.

    l Une classe UserControl1 hritant de la classe System.Windows.Forms.User Control fournissant lesfonctionnalitsdebasepouruncontrleWindows,avecsonfichiersourceUserControl1.vb.

    Lesrfrencessuivantessontautomatiquementajoutesetimportes :

    l System

    l System.Core

    l System.Data

    Bibliothquedeclasse

    BibliothquedecontrlesWindows

    - 2 - ENI Editions - All rigths reserved

  • l System.Data.DataSetExtensions

    l System.Drawing

    l System.Windows.Forms

    l System.Xml

    l System.Xml.Linq

    Ce type dapplication est destin tre excut partir de la ligne de commande dune fentre de invit decommande.Elleestbiensrconuesansinterfacegraphique, lesentres/sortiessefaisantpartirdela lignedecommandeetverslaconsole.

    CetypedapplicationesttrspratiquepourraliserdestestsavecVisualBasic,carellepermetdeseconcentrersurunpointparticuliersansavoirsesoucierdelaspectprsentationdelapplication.

    De nombreux exemples, prsents dans cet ouvrage, sont bass sur une application en mode console. Il fautcependantavouerque,mispartsasimplicitdecration,cetypedapplicationestdevenuunpeuobsolte.

    Leslmentssuivantssontajoutspardfautauprojet :

    l UnfichierAssemblyInfo.vbutilispourladescriptionduprojetavecnotammentlesinformationsconcernantlaversion.

    l Uneclassedebaseavecsonfichiersourceclass1.vb.

    Lesrfrencessuivantessontautomatiquementajoutesetimportes :

    l System

    l System.Core

    l System.Data

    l System.Data.DataSetExtensions

    l System.Deployment

    l System.Xml

    l System.Xml.Linq

    Ce modle de projet est conu pour la cration dapplications sexcutant en tche de fond sur le systme. Lelancementdece typepeuttreeffectuautomatiquementaudmarragedusystmeetnencessitepasquunesessionutilisateursoitouvertepourpouvoirsexcuter.

    Ce type dapplication est dpourvu dinterface utilisateur. Si des informations doivent tre communiques lutilisateur, elles devront transiter par les journaux systme, consultables, par lobservateur dvnements. Leslmentssuivantsserontajoutsauprojet :

    l UnfichierAssemblyInfo.vbutilispourladescriptionduprojetavecnotammentlesinformationsconcernantlaversion.

    l Une classe de base avec le squelette des procdures OnStart et OnStop appeles automatiquement audmarrageetlarrtduservice.

    Lesrfrencessuivantessontautomatiquementajoutesetimportes :

    Applicationconsole

    ServiceWindows

    - 3 - ENI Editions - All rigths reserved

  • l System

    l System.Core

    l System.Data

    l System.Data.DataSetExtensions

    l System.Deployment

    l System.ServiceProcess

    l System.Xml

    l System.Xml.Linq

    Ce modle de projet permet de bnficier du nouveau systme daffichage graphique de Windows, utilis dansWindowsVista.

    Leslmentssuivantssontautomatiquementajoutsauprojet :

    l Un fichier AssemblyInfo.vb utilis pour la description de lapplication avec notamment les informationsconcernantlaversion.

    l Un fichier Application.Xaml et son fichier de code associ, Application.Xaml.vb, permettant la gestion desvnementsdclenchsauniveaudelapplication.

    l UnefentredebaseWindow1.Xamletsonfichierdecodeassoci,Window1.Xaml.vb.

    Lesrfrencessuivantessontautomatiquementajoutesetimportes :

    l PresentationCore

    l PresentationFramework

    l System

    l System.Core

    l System.Data

    l System.Data.dataSetExtensions

    l System.Xml

    l System.Xml.Linq

    l WindowsBase

    CommelabibliothquedecontrlesWindows,cetypedeprojetpermetdtendrelaboteoutilsdjdisponibledanslesapplicationsWPF.Leslmentssuivantssontajoutsauprojet.

    ApplicationWPF

    BibliothquedecontrlesWPF

    - 4 - ENI Editions - All rigths reserved

  • l Un fichier AssemblyInfo.vb utilis pour la description de lapplication avec notamment les informationsconcernantlaversion.

    l UnfichierUserControl1.xamlpourladfinitiondelaspectgraphiqueducontrle.

    l UnfichierUserControl1.xaml.vbpourlecodeassocicecontrle.

    Lesrfrencessuivantessontautomatiquementajoutesetimportes :

    l PresentationCore

    l PresentationFramework

    l System

    l System.Core

    l System.Data

    l System.Data.dataSetExtensions

    l System.Xml

    l System.Xml.Linq

    l WindowsBase

    Ce type de projet a galement pour vocation dtendre la bote outils disponible pour les applications WPF.Contrairementautypedeprojetprcdent,lescontrlesnesontpascrsdetoutepice,maissontbasssurdescontrlesexistantsdontilstendentlescaractristiques.

    Lesrfrencesetimportationssontidentiquesautypedeprojetprcdent.

    Cemodledoittreutilislorsquevoussouhaitezcrervotrepropretypedeprojet.Seullefichierprojetestcr.Parcontre,aucunautrelmentnestajoutautomatiquementetaucunerfrencenestcreouimporte.

    b.Crationdemodledeprojet

    Vouspouvezcrervotrepropremodledeprojetenfonctiondevoshabitudesdedveloppementetfaireensortequilapparaisseparmilesmodlesprdfinis.

    Vousdevezconcevoirleslmentssuivants :

    l Un fichierdedfinitioncontenant lesmtadonnesdumodle.Ce fichierestutilisparVisualStudiopourlaffichageduprojetdanslenvironnementdedveloppementetpourlaffectationdepropritspardfautauprojet.CesinformationssontcontenuesdansunfichierXMLayantlextension.vstemplate.

    l Unfichierpourleprojet(.vbproj).

    l Lesfichierssourcesetressourcesincluspardfautlorsdelacrationdunprojetpartirdecemodle.

    Cesfichiersdoiventtrecompresssdansunfichierzip.Lefichierzipdoitcontenirlesfichiersindividuellementetnonledossierdanslequelilssontplacs.

    Lefichier.vstemplatedoitavoirleformatsuivant :

    BibliothquedecontrlesWPFpersonnaliss

    Projetvide

    - 5 - ENI Editions - All rigths reserved

  • AppliPerso creation dun projet avec une configuration personalise VisualBasic AppliPerso AssemblyInfo.vb Feuille1.vb Feuille1.Designer.vb Feuille1.resx

    Onretrouvedanscefichier :

    DanslasectionName

    Lenomaffichparlabotededialoguedecrationdunnouveauprojet.

    DanslasectionDescription

    Unedescriptiondtailleduprojet.

    DanslasectionProjectType

    Lenomdudossierdanslequelceprojetseraclassdanslabotededialoguedecrationdeprojet.

    DanslasectionDefaultName

    Le nomutilis par dfaut pour tous les projets crs partir de cemodle.Cenomest complt par un suffixenumriquelacrationduprojet.

    DanslasectionProjectFile

    Lenomdufichierprojetassociaumodle.Cefichierdoittreprsentdanslefichierzipdumodle.

    DanslessectionsProjectItem

    Leslmentsfaisantpartieduprojet.Ceslmentsdoiventgalementtredisponiblesdanslefichierzip.

    c.Modificationdunmodleexistant

    Lamodificationdunmodleconsisteutiliserunfichierzipexistantcontenantleslmentsncessairesauprojetetyajouterdeslmentssupplmentaires.Sidesfichierssontajoutsaumodle,ilsdoiventtreplacsdanslefichierzipetgalementrfrencsdanslefichier.vstemplate.LesmodlesprdfinisdeVisualStudiosontplacsdanslerpertoire C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ProjectTemplates\ VisualBasic. Pour que lesmodificationssoientprisesencompte,vousdevezmettrejourlecacheutilisparVisualStudio.Pourcela :

    n OuvrezunefentredecommandeVisualStudio.

    n Saisissez la commandedevenv /setup.Soyezpatientcarcettecommandeestassez longuesexcuter.Aprsexcutiondelacommande,vosmodificationssontdisponiblesdanslemodledeprojet.

    d.Utilisationdunprojetexistantcommemodle

    Cestpeuttrelasolutionlaplussimplepourconstruireunmodledeprojet.

    - 6 - ENI Editions - All rigths reserved

  • n Dansunpremiertemps,crezlemodlecommeunprojetordinaire.

    n Une fois votre projet finalis, exportezle comme modle. Le menu Fichier Exporter le modle dmarre unassistantpourvousguiderpendantlacrationdumodle.

    Cettepremirebotededialoguevousproposedechoisirleprojetquevoussouhaitezexporterainsique,larubriquedelabotededialoguedecrationdeprojetdanslaquelleseraplaclefuturmodle.

    Cettedeuximebotededialoguevousinvitechoisiruneicnepourvotremodledeprojet,unnompourlemodleetunedescription.DeuxoptionssupplmentairesvouspermettentdeprendreencompteimmdiatementlenouveaumodledansVisualStudioetdevousprsenterlersultatdelagnrationenvousaffichantlecontenudufichierzipcr.Aprsvalidationdecettedernirebotededialogue,lenouveaumodledeprojetestdisponibledansVisualStudio.

    Cettemthodeest trssimplepourconstruireunnouveaumodledeprojetetvitedese torturer lespritaveclasyntaxedufichier.vstemplate.

    - 7 - ENI Editions - All rigths reserved

  • Danslecadredundveloppementenquipe,ilpeuttreintressantdepartagerlesmodlespersonnalissentretouslesmembresdelquipe.

    n Recopiezlesfichierszipsurunpartagerseau.

    n Configurez lenvironnementVisualStudiopour luipermettredaccderauxmodles.CettemodificationseffectueparlabotededialoguedisponibleparlemenuOutilsOptions.

    2.Modificationdunprojet

    Lesmodlesdeprojets sont trsutilespourcrer rapidement lesbasesduneapplicationmais, trs frquemment,ncessiteront lajoutdenouveauxlmentsauprojet.Cesajoutssefontpar lintermdiairedumenucontextueldelexplorateurdeprojet.

    n ActivezloptionAjouter Nouvellmentafindechoisirletypedlmentquevoussouhaitezajouterauprojet.Labotededialogueproposeunnombreimpressionnantdlmentspouvanttreajoutsunprojet.

    - 8 - ENI Editions - All rigths reserved

  • n Indiquezensuiteunnompourlefichiercontenantlenouvellment.

    En fonction des types de projet, des options supplmentaires permettant rapidement dajouter un nouvellment sont disponibles dans le menu contextuel. Cellesci affichent simplement la bote de dialogue

    prcdenteavecletypedlmentcorrespondantdjprslectionn.

    Ilestgalementpossibledereprendreunlmentexistantdansunautreprojetetdelajouterunprojet.Utilisez,danscecas,loptionAjouter lementexistantdumenucontextueldelexplorateurdeprojets.Unebotededialoguevousproposelaslectiondufichierincluredansleprojet.

    LeboutonAjouter de cette bote de dialogue comporte unmenupermettant dajouter le fichiernormalement (unecopie localedu fichier est alors ralise)oude crerun lien sur le fichier (le fichier original estutilis). Il faut treprudentaveccettepossibilitcarlefichiernappartientpasrellement lapplicationmaispeuttrepartagentreplusieurs applications. Si le fichier est supprim du disque, toutes les applications lutilisant ne pourront plus trecompiles.

    LagestiondesfichiersdanslexplorateurdesolutionsestidentiquelagestiondesfichiersdanslexplorateurWindows.Les fichierspeuventtrecopisetcollsoudplacsparuncliquglissdundossierunautre.

    Lutilisationdestouches[Ctrl],[Shift]et[Ctrl][Shift]pendantlecliquglissmodifielactionralise.Uncliquglissauseindunmmeprojeteffectueundplacementdefichier.Silestralisentredeuxprojets,cestalorsunecopie

    - 9 - ENI Editions - All rigths reserved

  • defichierquiesteffectue.Cecomportementpeuttremodifipar lutilisationde latouche[Shift] lorsducliqugliss. Pour raliser une copie de fichier au sein dun projet, la touche [Ctrl] sera utilise conjointement avec lecliqugliss.Lacrationdunlienseffectueaveclacombinaisondetouches[Ctrl][Shift]lorsducliqugliss.

    Afin de retirer un lment dun projet, deux options sont accessibles par le menu contextuel de lexplorateur desolutions :

    l LoptionSupprimersupprimelefichierduprojetmaisgalementdudisque.

    l LoptionExclureduprojetretirelefichierduprojet,maisnelesupprimepasdudisque.Cetteoptionestutilesidautresprojetsutilisentcefichierparlintermdiairedunlien.

    3.Propritsdesprojets

    Lesprojetssontdeslments fondamentauxde laconceptionduneapplicationavecVisualBasic.Ilspossdentdenombreusespropritspermettantdemodifierleurscomportementsaumomentdelaconceptionoudelexcutiondelapplication. Lensemble des proprits sont accessibles par une bote de dialogue prsentant, par lintermdiairedonglets,lesdiffrentesrubriquesdeconfigurationdunprojet.

    n Activez cette bote de dialogue par loptionProprits dumenu contextuel de lexplorateur de projet ou par le

    bouton delabarredoutilsdelexplorateurdeprojet.

    a.Propritsdapplication

    Lespropritsprsentessurcetongletvontpermettredeconfigurerlecomportementdelapplication.

    Cette proprit dtermine le nomutilis pour le fichier rsultant de la compilation de lapplication. Par dfaut, ce

    Nomdelassembly

    - 10 - ENI Editions - All rigths reserved

  • fichierportelemmenomqueleprojetmaisilspeuventtremodifisindpendammentlundelautre.Lextensionassocieaufichierdpenddutypeduprojet.

    Cette proprit dtermine le type dapplication gnre par la compilation du projet. En rgle gnrale, cettepropritestdtermineparlemodlechoisiaumomentdelacrationduprojet.Cettepropritesttrsrarementmodifie par la suite car elle dpend normment du code de votre projet (si vous avez conu votre applicationcommeuneapplicationWindowsetquesouhaitez laconsidrercommeuneapplicationconsole, il risquedyavoirbeaucoupdecodeinutile !).

    Cettepropritdterminelepointdentredanslapplication,lorsdesonexcution.Gnralement,ellecorrespondla fentre principale de lapplication ou une procdure Sub Main. Cette proprit nest disponible que pour lesprojetspouvantsexcuterdemanireautonome.Elleestinutilepourlesprojetsdetypebibliothque.

    Tousleslmentsduprojet,accessiblespartirdunautreprojet,appartiennentlespacedenomdfiniparcetteproprit.Cellecivientsajouterauxventuelsespacesdenoms,dfinisauniveauducodeluimme.Pardfaut,cette proprit correspond au nom du projetmais elle peut tremodifie indpendamment de celuici. Elle peutmmetrevidevouspermettantainsidegrerlesespacesdenomsdirectementdanslecode.

    Cettepropritconfigurelicneassocieaufichiercompilduprojet,lorsquilestaffichdanslexplorateurWindowsoulorsquelapplicationapparatsurlabarredestchesdeWindows.

    Cette option permet de fournir des informations sur le code gnr par la compilation du projet. Une bote dedialoguepermetderemplirdiffrentesrubriquesconcernantladescriptionduprojet.

    Lutilisateur de votre code pourra consulter ses informations en affichant les proprits du fichier compil danslexplorateurWindows.

    Cetteoptionpermetdedterminerleniveaudexcutionrequispourlapplication.CesinformationssontutilisesparlemcanismeUserAccountControl(UAC)deWindowsVista.Ildterminesousquelleidentitvatreexcutlecodedelapplication.Troisvaleurssontpossibles

    l asInvoker : lapplicationsexcuteaveclidentitactuelledelutilisateuretnedemandepasdaugmentation

    Typedapplication

    Formulairededmarrage

    Espacedenomsracine

    Icne

    Informationsdelassembly

    AfficherlesparamtresUAC

    - 11 - ENI Editions - All rigths reserved

  • deprivilges.

    l highestAvailable : lapplicationsexcuteavecleplushautniveaudeprivilgesdelutilisateur.

    l requireAdministrator : lapplication doit sexcuter avec le privilge administrateur et UAC peut vousdemandervotreconsentementpouraccorderlaugmentationdesprivilges.

    PourlessystmesautresqueWindowsVistacetteoptionestignore.

    Cette option dtermine si vous souhaitez activer une interaction plus volue entre lapplication et le systmedexploitation.Sicetteoptionestactive,llmentdedmarragedelapplicationdoitobligatoirementtreunefeuille.Lutilisationdecetteoptionactiveladisponibilitdespropritssuivantes.

    SicetteoptionestactiveetquelapplicationsexcutesurunsystmeWindowsXP,alorslinterfaceutilisateurdelapplicationsadapteraauthmeWindowsactif.

    Par dfaut, vous pouvez lancer autant dexemplaires dune mme application que vous le souhaitez sur unposte toutefois,ilpeutparfoistreutiledenautoriserlefonctionnementquedunseulexemplairedelapplicationun instant donn (problme de licence dutilisation, prservation des ressources de lamachine...). Lactivationdecette option garantit quil ny aura pas plus dun exemplaire de lapplication sexcutant sur la machine. Si unenouvelle instance est lance alors quil en existe dj une sur le systme, le focus passe immdiatement surlinstanceexistante.Auniveaudelapplication,lvnementStartupNextInstanceestgalementdclench.

    Cette option indique si les proprits personnalises de lapplication sont sauvegardes la fermeture delapplication.Cecipermet,parexemple,demmoriserlesprfrencesdelutilisateur.

    Pardfaut,lesapplicationsVisualBasicutilisentlauthentificationWindowspouridentifierlutilisateurdelapplication.Sivoussouhaitezgrervousmmecetteidentification,vousdevezutiliserloptionDfiniauniveaudelapplication.

    Cette option dtermine le comportement de lapplication lors de son arrt. Par dfaut, lexcutionde lapplicationsarrtelorsquelafentrededmarragedelapplicationestferme,mmesilyadautresfentresactives(hormisbiensrune fentremodale).Loption la fermeturedudernier formulaireprovoquelarrtde lapplication lafermeturedeladernirefentreactivedelapplicationoulorsquelesinstructionsMy.application.exit ouendsontappelesexplicitementdanslecode.

    Les crans daccueil sont souvent utiliss pour fournir des informations lutilisateur, pendant le dmarrage delapplication. Visual Studio propose un modle dcran daccueil personnalisable. Cet cran apparat pendant lechargementdelafentreprincipaledelapplication.

    Cette option permet daccder aux gestionnaires dvnements de lobjet application. Ces gestionnairesdvnementspermettentderagirfacediffrentessituations :

    Startup

    Lapplicationdmarre.

    StartUpNextInstance

    Unnouvelexemplairedelapplicationvientdtrelanc.

    Activerlinfrastructuredelapplication

    ActiverlesstylesvisuelsXP

    Applicationinstanceunique

    EnregistrerMy.settingslorsdelarrt

    Modedauthentification

    Modedarrt

    crandedmarrage

    Afficherlesvnementsdelapplication

    - 12 - ENI Editions - All rigths reserved

  • Shutdown

    Lapplicationsarrte.

    UnHandledException

    Uneexceptionnongrevientdeseproduire.

    NetworkAvailabilityChanged

    Laccsaurseauvientdtremodifi(lecbleestdbranchourebranch).

    b.Rfrencesetimportationsdunprojet

    Pourpouvoirutiliserdeslmentsexternes,disponiblesdansunassembly,vousdevezajouterunerfrencecetassemblage.

    Lapagedepropritsuivanteregroupetouteslesinformationsconcernantlesrfrencesdunprojet.

    Dans cette page de proprit, la listeReferences prsente tous les assemblages actuellement rfrencs par leprojet.

    Cette liste peut tremise jour laide des boutons Ajouter,Supprimer,Mettre jour la rfrenceWeb quipermettentrespectivement,dajouterunerfrencelocaleouunerfrenceWeb,desupprimerunerfrenceoudemettrejourunerfrenceWeb.

    Le bouton Chemins daccs des rfrences permet dindiquer des rpertoires supplmentaires contenant desassemblagesdisponibles.Cesrpertoiressontscrutslouverturedelabotededialoguedajoutderfrenceetles ventuels assemblages quils contiennent sont ajouts la liste des assemblages disponibles. Lorsquunerfrenceestajouteunassemblage, le fichieroriginalestutilis lorsde lapremireexcutionde lapplication.Vouspouvezutiliserlacrationautomatiquedunecopielocaledecefichierdanslerpertoiredelapplication.Pourcela :

    n Modifiez la proprit Copy Local de la rfrence concerne. Aprs avoir slectionn la rfrence, vous pouvezmodifiercettepropritdanslafentredepropritsdeVisualStudio.

    - 13 - ENI Editions - All rigths reserved

  • Le bouton Rfrences inutilises propose la liste de toutes les rfrences non utilises dans le code et vousproposedelessupprimerduprojet.

    Leslmentsdisponiblesdanslesassemblagesrfrencsfonttrscertainementpartiedunespacedenom.Pourpouvoirlesutiliserfacilementilestpossibledimporterautomatiquementcertainsespacesdenom.LalisteEspacesde noms imports reprend les espaces de nom imports automatiquement dans tous les codes du projet. VouspouvezcompltercettelisteensaisissantdanslazonedetextelenomdelespacedenomimportetenvalidantavecleboutonAjouteruneimportationutilisateur.

    c.Propritsdedbogage

    Lespropritsprsentessurcettepagedterminentlecomportementduprojetlorsdesondbogage.

    Cettepropritdterminelecomportementduprojetlorsdudmarragedudbogage.Troisoptionssontpossibles :

    l Dmarrerleprojetindiquequeleprojetluimmedoittreexcut.CetteoptionnestutiliserquepourlesprojetsdapplicationWindowsoulesprojetsdapplicationconsole.

    l Dmarrer le programme externe permet de provoquer lexcution dune application externe qui va sechargerdefairedesappelsaucodenotreprojet.Cetteoptionestutilisepourl