Gebeurtenissen voor build opgeven (Visual Basic)
Build-gebeurtenissen in Visual Basic kunnen worden gebruikt om scripts, macro's of andere acties uit te voeren als onderdeel van het compilatieproces. Gebeurtenissen voorafgaand aan het compileren vinden plaats vóór de compilatie; gebeurtenissen na het compileren vinden plaats na de compilatie.
Hoe u pre-build- en post-build-gebeurtenissen specificeert
Als u buildgebeurtenissen voor een .NET Core- of .NET 5- of hoger-project van Visual Basic wilt weergeven of wijzigen, klikt u met de rechtermuisknop op het projectknooppunt en kiest u Eigenschappen (of drukt u op Alt+Enter), gaat u naar Compileer>gebeurtenissen. Voer de gewenste opdrachtregel in. De werkmap is de uitvoermap.
Voer voor .NET Framework-projecten de volgende stappen uit:
Als een project is geselecteerd in Solution Explorer, klikt u in het menu Project op Eigenschappen.
Klik op het tabblad Compileren.
Klik op de knop Build Events om het dialoogvenster Build Events te openen.
Voer de opdrachtregelargumenten in voor de pre-build- of post-buildactie, en klik vervolgens op OK.
Build-gebeurtenissen worden opgegeven in het dialoogvenster Build-gebeurtenissen, beschikbaar vanuit de pagina Compileren van de Projectontwerper.
Hoe u pre-build- en post-build-gebeurtenissen specificeert
Een build-gebeurtenis opgeven
Als een project is geselecteerd in Solution Explorer, klikt u in het menu Project op Eigenschappen.
Klik op het tabblad Compileren.
Klik op de knop Build Events om het dialoogvenster Build Events te openen.
Voer de opdrachtregelargumenten in voor de pre-build- of post-buildactie, en klik vervolgens op OK.
Notitie
Voeg een call
-instructie toe vóór alle opdrachten na de build die .bat bestanden uitvoeren. Bijvoorbeeld call C:\MyFile.bat
of call C:\MyFile.bat call C:\MyFile2.bat
.
Notitie
Als uw pre-build- of post-buildgebeurtenis niet is voltooid, kunt u de build beëindigen door de gebeurtenisactie af te sluiten met een andere code dan nul (0), wat aangeeft dat de actie is geslaagd.
Voorbeeld: Manifestgegevens wijzigen met behulp van een gebeurtenis na de build
In de volgende procedure ziet u hoe u de minimale versie van het besturingssysteem in het toepassingsmanifest instelt met behulp van een .exe opdracht die wordt aangeroepen vanuit een gebeurtenis na de build (het .exe.manifest--bestand in de projectmap). De minimale versie van het besturingssysteem is een vierdelig nummer, zoals 4.10.0.0. Hiervoor wijzigt de opdracht de <dependentOS>
sectie van het manifest:
<dependentOS>
<osVersionInfo>
<os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
</osVersionInfo>
</dependentOS>
Een .exe opdracht maken om het toepassingsmanifest te wijzigen
Maak een consoletoepassing voor de opdracht. Klik in het menu Bestand op Nieuwen klik vervolgens op Project-.
Selecteer in het dialoogvenster Nieuw project, in het knooppunt Visual Basic, eerst Windows en vervolgens de sjabloon Consoletoepassing. Geef het project de naam
ChangeOSVersionVB
.Voeg in Module1.vbde volgende regel toe aan de andere
Imports
instructies boven aan het bestand:Imports System.Xml
Voeg de volgende code toe in
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
De opdracht heeft twee argumenten. Het eerste argument is het pad naar het toepassingsmanifest (dat wil bijvoorbeeld de map waarin het buildproces het manifest maakt, meestal <ProjectName>.publish). Het tweede argument is de nieuwe besturingssysteemversie.
Klik in het menu Build op Build Solution.
Kopieer het .exe bestand naar een map, zoals C:\TEMP\ChangeOSVersionVB.exe.
Roep vervolgens deze opdracht aan in een gebeurtenis na de build om het toepassingsmanifest te wijzigen.
Een gebeurtenis na de build aanroepen om het toepassingsmanifest te wijzigen
Maak een Windows-toepassing voor het project dat moet worden gepubliceerd. Klik in het menu Bestand op Nieuwen klik vervolgens op Project-.
Selecteer in het dialoogvenster Nieuw project in het knooppunt Visual BasicWindows Desktop en selecteer vervolgens de sjabloon Windows Forms App. Geef het project de naam
VBWinApp
.Terwijl het project is geselecteerd in Solution Explorer, klikt u in het menu Project op Eigenschappen.
Ga in de Projectontwerpernaar de pagina Publiceren en stel Publicatielocatie in op C:\TEMP-.
Publiceer het project door te klikken op Nu publiceren.
Het manifestbestand wordt gemaakt en in C:\TEMP\VBWinApp_1_0_0_0\VBWinApp.exe.manifest-geplaatst. Als u het manifest wilt weergeven, klik met de rechtermuisknop op het bestand en klik op Openen met, selecteer vervolgens Het programma uit een lijsten klik daarna op Kladblok.
Zoek in het bestand naar het
<osVersionInfo>
-element. De versie kan bijvoorbeeld het volgende zijn:<os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
Ga in de projectontwerpernaar het tabblad Compileren en klik op de knop Gebeurtenissen bouwen om het dialoogvenster Build Events te openen.
In het vak van de opdrachtregel voor de post-build gebeurtenis, voert u de volgende opdracht in:
C:\TEMP\ChangeOSVersionVB.exe "$(TargetPath).manifest" 5.1.2600.0
Wanneer u het project bouwt, wordt met deze opdracht de minimale versie van het besturingssysteem in het toepassingsmanifest gewijzigd in 5.1.2600.0.
De
$(TargetPath)
macro geeft het volledige pad weer voor het uitvoerbare bestand dat wordt gemaakt. Daarom geeft $(TargetPath).manifest het toepassingsmanifest op dat is gemaakt in de bin map. Als u publiceert, wordt dit manifest gekopieerd naar de publicatielocatie die u eerder hebt ingesteld.Publiceer het project opnieuw. Ga naar de pagina Publiceren en klik op Nu publiceren.
Bekijk het manifest opnieuw. Als u het manifest wilt weergeven, navigeert u naar de publicatiemap, klikt u met de rechtermuisknop op het bestand en kiest u Openen met, daarna Programma selecteren uit een lijsten vervolgens Kladblok.
De versie zou nu moeten weergeven:
<os majorVersion="5" minorVersion="1" buildNumber="2600" servicePackMajor="0" />