Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les événements de génération dans Visual Basic peuvent être utilisés pour exécuter des scripts, des macros ou d’autres actions dans le cadre du processus de compilation. Les événements de pré-build se produisent avant la compilation ; Les événements post-build se produisent après la compilation.
Comment spécifier des événements pré-build et des événements post-build
Pour afficher ou modifier les événements de build pour un projet Visual Basic .NET Core ou .NET 5 et ultérieur, cliquez avec le bouton droit sur le nœud du projet, puis choisissez Propriétés (ou appuyez sur Alt+Entrer), puis accédez à Compiler>Événements. Entrez la ligne de commande souhaitée. Le répertoire de travail est le répertoire de sortie.
Pour les projets .NET Framework, procédez comme suit :
Après avoir sélectionné un projet dans l’ Explorateur de solutions, dans le menu Projet, cliquez sur Propriétés.
Cliquez sur l’onglet Compiler.
Cliquez sur le bouton Générer des événements pour ouvrir la boîte de dialogue Générer des événements.
Entrez les arguments de ligne de commande de votre action de pré-build ou de post-build, puis cliquez sur OK.
Remarque
Ajoutez une call instruction avant toutes les commandes post-build qui exécutent .bat des fichiers. Par exemple, call C:\MyFile.bat ou call C:\MyFile.bat call C:\MyFile2.bat.
Remarque
Si votre événement de pré-compilation ou de post-compilation ne se termine pas correctement, vous pouvez arrêter la génération en faisant en sorte que votre action d'événement se termine avec un code différent de zéro (0), qui indique une action réussie.
Vous pouvez référencer des « macros » (en fait des noms de propriétés MSBuild) dans les scripts. Pour référencer une propriété, utilisez la syntaxe $(PropertyName), qui est remplacée par la valeur de propriété lorsque le script d’événement est exécuté. Pour obtenir la liste des valeurs couramment utilisées, consultez les propriétés communes MSBuild. Il peut y avoir d’autres propriétés ainsi que définies dans le fichier projet, dans tous les fichiers importés dans le fichier projet, dans les variables d’environnement ou transmises sur la ligne de commande à l’aide du -p commutateur MSBuild pendant les builds de ligne de commande.
Exemple : Modification des informations de manifeste à l’aide d’un événement post-build
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 .exe commande appelée à partir d’un événement post-build (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. Pour ce faire, 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 pour modifier le manifeste de l’application
Créez une application console pour la commande. Dans le menu Fichier, cliquez sur Nouveau, puis sur Projet.
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
ChangeOSVersionVB.Dans Module1.vb, ajoutez la ligne suivante aux autres instructions
Importsen haut du fichier :Imports System.XmlAjoutez le code suivant dans
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 SubLa commande prend deux arguments. Le premier argument est 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, généralement <ProjectName>.publish). Le deuxième argument est la nouvelle version du système d’exploitation.
Dans le menu Générer , cliquez sur Générer la solution.
Copiez le fichier .exe dans un répertoire tel que C:\TEMP\ChangeOSVersionVB.exe.
Ensuite, appelez cette commande dans un événement post-build pour modifier le manifeste de l’application.
Pour appeler un événement post-build pour modifier le manifeste de l’application
Créez une application Windows pour que le projet soit publié. Dans le menu Fichier, cliquez sur Nouveau, puis sur Projet.
Dans la boîte de dialogue Nouveau projet, dans le nœud Visual Basic, sélectionnez Windows Desktop, puis le modèle application Windows Forms. Nommez le projet
VBWinApp.Lorsque le projet est sélectionné dans Explorateur de solutions, dans le menu Projet, cliquez sur Propriétés.
Dans le Concepteur de projet, accédez à la page Publier et affectez à Emplacement de publication la valeur C:\TEMP.
Publiez le projet en cliquant sur Publier maintenant.
Le fichier manifeste sera généré et placé dans C:\TEMP\VBWinApp_1_0_0_0\VBWinApp.exe.manifest. Pour afficher le manifeste, cliquez avec le bouton droit sur le fichier, puis cliquez sur Ouvrir avec, puis cliquez sur Sélectionner le programme dans une liste, puis cliquez sur bloc-notes.
Recherchez dans le fichier l’élément
<osVersionInfo>. Par exemple, la version peut être :<os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />Dans le Concepteur de projets , accédez à l’onglet Compiler et cliquez sur le bouton Générer des événements pour ouvrir la boîte de dialogue Générer des événements.
Dans la zone Ligne de commande de l’événement post-build, entrez la commande suivante :
C:\TEMP\ChangeOSVersionVB.exe "$(TargetPath).manifest" 5.1.2600.0Lorsque vous générez le projet, cette commande modifie la version minimale du système d’exploitation dans le manifeste de l’application à 5.1.2600.0.
La macro
$(TargetPath)exprime le chemin complet de l’exécutable en cours de création. Par conséquent,$(TargetPath).manifestspécifie le manifeste d’application créé dans le répertoire bin . La publication copie ce manifeste vers l’emplacement de publication que vous avez défini précédemment.Publiez à nouveau le projet. Accédez à la page Publier, puis cliquez sur Publier maintenant.
Affichez à nouveau le manifeste. Pour afficher le manifeste, accédez au répertoire de publication, cliquez avec le bouton droit sur le fichier, puis cliquez sur Ouvrir avec, puis Sélectionnez le programme dans une liste, puis cliquez sur Bloc-notes.
La version doit maintenant lire :
<os majorVersion="5" minorVersion="1" buildNumber="2600" servicePackMajor="0" />