Megosztás a következőn keresztül:


Build események megadása (Visual Basic)

A Visual Basic buildeseményei szkriptek, makrók vagy egyéb műveletek futtatására használhatók a fordítási folyamat részeként. Az összeállítás előtti események a fordítás előtt következnek be; összeállítás utáni események a fordítás után következnek be.

A build előtti és utáni események megadása

A Visual Basic .NET Core vagy .NET 5 és újabb projektek buildeseményeinek megtekintéséhez vagy módosításához kattintson a jobb gombbal a projektcsomópontra, majd válassza a Tulajdonságok lehetőséget (vagy nyomja le a Alt+Enterkombinációt), majd lépjen a Fordítás>Eseményekfülre. Adja meg a kívánt parancssort. A munkakönyvtár a kimeneti könyvtár.

.NET-keretrendszer-projektek esetén kövesse az alábbi lépéseket:

  1. Ha a Megoldáskezelőkijelölt egy projektet, kattintson a Project menü Tulajdonságokparancsára.

  2. Kattintson a Kompatibilizálás fülre.

  3. Kattintson az Események összeállítása gombra az Események összeállítása párbeszédpanel megnyitásához.

  4. Adja meg az összeállítás előtti vagy utáni művelet parancssori argumentumait, majd kattintson OKgombra.

A Build események a Build Events párbeszédpanelen vannak megadva, amely a Fordítás lapján érhető el a Project Designer-ben.

A build előtti és utáni események megadása

Egy buildesemény megadása

  1. Ha a Megoldáskezelőkijelölt egy projektet, kattintson a Project menü Tulajdonságokparancsára.

  2. Kattintson a Kompatibilizálás fülre.

  3. Kattintson az Események összeállítása gombra az Események összeállítása párbeszédpanel megnyitásához.

  4. Adja meg az összeállítás előtti vagy utáni művelet parancssori argumentumait, majd kattintson OKgombra.

Jegyzet

Adjon hozzá egy utasítást call a fájlokat futtató .bat összes összeállítás utáni parancs elé. Például call C:\MyFile.bat vagy call C:\MyFile.bat call C:\MyFile2.bat.

Jegyzet

Ha az előre elkészített vagy a buildelés utáni esemény nem fejeződik be sikeresen, a buildet úgy állíthatja le, hogy az eseményművelet a nullától (0) eltérő kóddal lép ki, ami sikeres műveletet jelez.

A szkriptekben hivatkozhat "makrókra" (valójában MSBuild tulajdonságnevekre). Tulajdonságra való hivatkozáshoz használja a szintaxist $(PropertyName), amelyet az eseményszkript végrehajtásakor a tulajdonságértékkel helyettesít. A gyakran használt értékek listájáért lásd az MSBuild common properties című dokumentumot. A projektfájlban, bármely importált fájlban, a környezeti változókban vagy a parancssori build során a parancssorban az MSBuild kapcsolóval -p megadott parancssori buildek során más tulajdonságok is meghatározhatók.

Példa: Jegyzékadatok módosítása a buildelés utáni eseményekkel

Az alábbi eljárás bemutatja, hogyan állíthatja be az operációs rendszer minimális verzióját az alkalmazásjegyzékben egy .exe buildelés utáni eseményből (a .exe.manifest projektkönyvtárban található fájlból) hívott paranccsal. Az operációs rendszer minimális verziója egy négyrészes szám, például 4.10.0.0. Ehhez a parancs módosítja a jegyzék <dependentOS> szakaszát:

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

.exe parancs létrehozása az alkalmazásjegyzék módosításához

  1. Hozzon létre egy konzolalkalmazást a parancshoz. A Fájl menüben kattintson az Újelemre, majd a Projectelemre.

  2. Az Új projekt párbeszédpanel Visual Basic csomópontján válassza Windows, majd a Konzolalkalmazás sablont. Nevezze el a projekt ChangeOSVersionVB.

  3. A Module1.vbadja hozzá a következő sort a fájl tetején található többi Imports utasításhoz:

    Imports System.Xml
    
  4. Adja hozzá a következő kódot a 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
    

    A parancs két argumentumot használ. Az első argumentum az alkalmazásjegyzék elérési útja (vagyis az a mappa, amelyben a buildelési folyamat létrehozza a jegyzékfájlt, általában <ProjectName>.publish). A második argumentum az operációs rendszer új verziója.

  5. A Build menüben kattintson Megoldás létrehozásaelemre.

  6. Másolja a .exe fájlt egy könyvtárba, például C:\TEMP\ChangeOSVersionVB.exe.

    Ezután hívja meg ezt a parancsot egy build utáni eseményben az alkalmazásjegyzék módosításához.

Build utáni esemény meghívása az alkalmazásjegyzék módosításához

  1. Hozzon létre egy Windows-alkalmazást a közzéteendő projekthez. A Fájl menüben kattintson az Újelemre, majd a Projectelemre.

  2. Az Új projekt párbeszédpanel Visual Basic csomópontjában válassza Windows Desktop, majd a Windows Forms Alkalmazás sablont. Nevezze el a projekt VBWinApp.

  3. Ha a projekt Megoldáskezelőbenvan kiválasztva, kattintson a Projekt menü Tulajdonságokparancsára.

  4. Az Project Designeroldalon lépjen a Közzététel oldalra, és állítsa a közzétételi helyet a következőre: C:\TEMP.

  5. A projekt közzétételéhez kattintson a Közzétételgombra.

    A jegyzékfájl C:\TEMP\VBWinApp_1_0_0_0\VBWinApp.exe.manifestlesz létrehozva és elhelyezve. A jegyzékfájl megtekintéséhez kattintson a jobb gombbal a fájlra, aztán kattintson a Megnyitás amenüponttal lehetőségre, majd válassza a Program kiválasztása a listábólopciót, és végül kattintson a Jegyzettömbprogramra.

    Keresse meg a fájlban a <osVersionInfo> elemet. A verzió például a következő lehet:

    <os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
    
  6. A Project Designerlapon lépjen a Összeállítás lapra, és kattintson a Felépítési események gombra a Felépítési események párbeszédpanel megnyitásához.

  7. A Build utáni esemény parancssor mezőbe írja be a következő parancsot:

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

    A projekt létrehozásakor ez a parancs az alkalmazásjegyzékben szereplő minimális operációsrendszer-verziót 5.1.2600.0-ra módosítja.

    A $(TargetPath) makró a létrehozandó végrehajtható fájl teljes elérési útját fejezi ki. $(TargetPath).manifest Ezért a bin könyvtárban létrehozott alkalmazásjegyzéket adja meg. A közzététel ezt a jegyzékfájlt a korábban beállított közzétételi helyre másolja.

  8. Tegye közzé ismét a projektet. Lépjen a Közzététel oldalra, és kattintson most a Közzétételgombra.

    Tekintse meg újra a jegyzékfájlt. A jegyzék megtekintéséhez nyissa meg a közzétételi könyvtárat, kattintson a jobb gombbal a fájlra, és kattintson a Megnyitás parancsra, majd Válassza ki a programot egy listából, majd kattintson Jegyzettömbparancsra.

    A verziónak most a következőt kell olvasnia:

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