Comment : spécifier des événements de génération (Visual Basic)

Mise à jour : Juillet 2008

Les événements de génération en Visual Basic peuvent être utilisés pour exécuter des scripts, macros ou autres actions en tant que parties du processus de compilation. Les événements avant génération se produisent avant compilation ; les événements après génération se produisent après compilation.

Les événements de génération sont spécifiés dans la boîte de dialogue Événements de génération, disponible à partir de la page Compiler du Concepteur de projets.

Comment : spécifier des événements avant génération et après génération

Pour spécifier un événement de génération

  1. Un projet étant sélectionné dans l'Explorateur de solutions, cliquez dans le menu Projet sur Propriétés.

  2. Cliquez sur l'onglet Compiler.

  3. Cliquez sur le bouton Événements de génération pour ouvrir la boîte de dialogue Événements de génération.

  4. Spécifiez les arguments de ligne de commande pour votre action avant ou après génération, puis cliquez sur OK.

    Remarque :

    Ajoutez une instruction call avant toutes les commandes après génération qui exécutent des fichiers .bat. Par exemple, call C:\MyFile.bat ou call C:\MyFile.bat call C:\MyFile2.bat.

    Remarque :

    Si votre événement avant ou après génération ne se termine pas correctement, vous pouvez terminer la génération en quittant l'action d'événement avec un code autre que zéro (0), qui indique une action réussie.

Exemple : comment modifier les informations de manifeste à l'aide d'un événement après génération

La procédure suivante montre comment définir la version minimale du système d'exploitation dans le manifeste de l'application à l'aide d'une commande .exe appelée à partir d'un événement après génération (le fichier .exe.manifest dans le répertoire du projet). La version minimale du système d'exploitation est un nombre en quatre parties, tel que 4.10.0.0. À cette fin, la commande modifie la section <dependentOS> du manifeste :

<dependentOS>
   <osVersionInfo>
      <os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
   </osVersionInfo>
</dependentOS>

Pour créer une commande .exe afin de modifier le manifeste de l'application

  1. Créez une application console pour la commande. Dans le menu Fichier, cliquez sur Nouveau, puis sur Projet.

  2. Dans la boîte de dialogue Nouveau projet, dans le nœud Visual Basic, sélectionnez Windows, puis le modèle Application console. Nommez le projet ModifierVersionSEVB.

  3. Dans Module1.vb, ajoutez la ligne suivante aux autres instructions Imports en haut du fichier :

    Imports System.Xml
    
  4. Ajoutez le code suivant à Sub Main:

    Sub Main()
       Dim applicationManifestPath As String
       applicationManifestPath = My.Application.CommandLineArgs(0)
       Console.WriteLine("Application Manifest Path: " & applicationManifestPath.ToString)
    
       'Get version name
       Dim osVersion As Version
       If My.Application.CommandLineArgs.Count >= 2 Then
          osVersion = New Version(My.Application.CommandLineArgs(1).ToString)
       Else
          Throw New ArgumentException("OS Version not specified.")
       End If
       Console.WriteLine("Desired OS Version: " & osVersion.ToString())
    
    
       Dim document As XmlDocument
       Dim namespaceManager As XmlNamespaceManager
       namespaceManager = New XmlNamespaceManager(New NameTable())
       With namespaceManager
          .AddNamespace("asmv1", "urn:schemas-microsoft-com:asm.v1")
          .AddNamespace("asmv2", "urn:schemas-microsoft-com:asm.v2")
       End With
    
       document = New XmlDocument()
       document.Load(applicationManifestPath)
    
       Dim baseXPath As String
       baseXPath = "/asmv1:assembly/asmv2:dependency/asmv2:dependentOS/asmv2:osVersionInfo/asmv2:os"
    
       'Change minimum required OS Version.
       Dim node As XmlNode
       node = document.SelectSingleNode(baseXPath, namespaceManager)
       node.Attributes("majorVersion").Value = osVersion.Major.ToString()
       node.Attributes("minorVersion").Value = osVersion.Minor.ToString()
       node.Attributes("buildNumber").Value = osVersion.Build.ToString()
       node.Attributes("servicePackMajor").Value = osVersion.Revision.ToString()
    
       document.Save(applicationManifestPath)
    End Sub
    

    La commande prend deux arguments : le chemin d'accès au manifeste d'application (autrement dit, le dossier dans lequel le processus de génération crée le manifeste, en général NomProjet.publish) et la nouvelle version du système d'exploitation.

  5. Dans le menu Générer, cliquez sur Générer la solution.

  6. Copiez le fichier .exe vers un répertoire tel que C:\TEMP\ModifierVersionSEVB.exe.

Ensuite, appelez cette commande dans un événement après génération pour modifier le manifeste de l'application.

Pour appeler un événement après génération afin de modifier le manifeste de l'application

  1. Créez une application Windows pour le projet à publier. Dans le menu Fichier, cliquez sur Nouveau, puis sur Projet.

  2. Dans la boîte de dialogue Nouveau projet, dans le nœud Visual Basic, sélectionnez Windows, puis le modèle Application Windows. Nommez le projet VBAppWin.

  3. Un projet étant sélectionné dans l'Explorateur de solutions, cliquez dans le menu Projet sur Propriétés.

  4. Dans le Concepteur de projets, accédez à la page Publier et définissez Emplacement de publication avec la valeur C:\TEMP\.

  5. Publiez le projet en cliquant sur Publier maintenant.

    Le fichier manifeste est généré et placé dans C:\TEMP\VBWinApp_1_0_0_0\VBWinApp.exe.manifest. Pour consulter le manifeste, cliquez avec le bouton droit sur le fichier et cliquez sur Ouvrir avec, puis sur Sélectionner le programme dans une liste, puis cliquez sur Bloc-notes.

    Recherchez l'élément <osVersionInfo> dans le fichier. Par exemple, la version peut être la suivante :

    <os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
    
  6. Dans le Concepteur de projets, accédez à l'onglet Compiler et cliquez sur le bouton Événements de génération pour ouvrir la boîte de dialogue Événements de génération.

  7. Dans la zone Ligne de commande de l'événement après génération, entrez la commande suivante :

    C:\TEMP\ModifierVersionSEVB.exe "$ (TargetPath) .manifest" 5.1.2600.0

    Lorsque vous générez le projet, cette commande change la version minimale du système d'exploitation dans le manifeste de l'application en 5.1.2600.0.

    La macro $(TargetPath) exprime le chemin d'accès complet pour le fichier exécutable en cours de création. Par conséquent, $(TargetPath).manifest spécifie le manifeste d'application créé dans le répertoire bin. La publication copie ce manifeste vers l'emplacement de publication que vous définissez précédemment.

  8. Publiez à nouveau le projet. Allez à la page Publier et cliquez sur Publier maintenant.

    Consultez à nouveau le manifeste. Pour consulter le manifeste, accédez au répertoire de publication, cliquez avec le bouton droit sur le fichier et cliquez sur Ouvrir avec, puis sur Sélectionner le programme dans une liste et sur Bloc-notes.

    La version doit maintenant être :

    <os majorVersion="5" minorVersion="1" buildNumber="2600" servicePackMajor="0" />
    

Voir aussi

Tâches

Comment : spécifier des événements de génération (C#)

Référence

Page Compiler, Concepteur de projets (Visual Basic)

Page Publier, Concepteur de projets

Ligne de commande de l'événement avant/après génération, boîte de dialogue

Autres ressources

Gestion des propriétés de compilation

Historique des modifications

Date

Historique

Raison

Juillet 2008

Ajout d'une remarque sur les codes de sortie

Commentaires client.