Delen via


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:

  1. Als een project is geselecteerd in Solution Explorer, klikt u in het menu Project op Eigenschappen.

  2. Klik op het tabblad Compileren.

  3. Klik op de knop Build Events om het dialoogvenster Build Events te openen.

  4. 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

  1. Als een project is geselecteerd in Solution Explorer, klikt u in het menu Project op Eigenschappen.

  2. Klik op het tabblad Compileren.

  3. Klik op de knop Build Events om het dialoogvenster Build Events te openen.

  4. 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

  1. Maak een consoletoepassing voor de opdracht. Klik in het menu Bestand op Nieuwen klik vervolgens op Project-.

  2. Selecteer in het dialoogvenster Nieuw project, in het knooppunt Visual Basic, eerst Windows en vervolgens de sjabloon Consoletoepassing. Geef het project de naam ChangeOSVersionVB.

  3. Voeg in Module1.vbde volgende regel toe aan de andere Imports instructies boven aan het bestand:

    Imports System.Xml
    
  4. 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.

  5. Klik in het menu Build op Build Solution.

  6. 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

  1. Maak een Windows-toepassing voor het project dat moet worden gepubliceerd. Klik in het menu Bestand op Nieuwen klik vervolgens op Project-.

  2. 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.

  3. Terwijl het project is geselecteerd in Solution Explorer, klikt u in het menu Project op Eigenschappen.

  4. Ga in de Projectontwerpernaar de pagina Publiceren en stel Publicatielocatie in op C:\TEMP-.

  5. 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" />
    
  6. Ga in de projectontwerpernaar het tabblad Compileren en klik op de knop Gebeurtenissen bouwen om het dialoogvenster Build Events te openen.

  7. 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.

  8. 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" />