Určení událostí sestavení (Visual Basic)
Události sestavení v jazyce Visual Basic lze použít ke spouštění skriptů, maker nebo jiných akcí v rámci procesu kompilace. Před kompilací dochází k událostem před sestavením; po kompilaci dochází k událostem po sestavení.
Události sestavení jsou zadány v dialogovém okně Události sestavení, které jsou k dispozici na stránce Kompilace návrháře projektu.
Poznámka:
Visual Basic Express nepodporuje zadávání událostí sestavení. To je podporováno pouze v plném produktu Visual Studio.
Určení událostí před sestavením a po sestavení
Určení události sestavení
Pokud je projekt vybraný v Průzkumník řešení, klikněte v nabídce Projekt na příkaz Vlastnosti.
Klikněte na kartu Kompilace .
Kliknutím na tlačítko Události sestavení otevřete dialogové okno Události sestavení.
Zadejte argumenty příkazového řádku pro akci před sestavením nebo po sestavení a klepněte na tlačítko OK.
Poznámka:
call
Přidejte příkaz před všechny příkazy po sestavení, které spouštějí soubory .bat. Napříkladcall C:\MyFile.bat
nebocall C:\MyFile.bat call C:\MyFile2.bat
.Poznámka:
Pokud se událost před sestavením nebo po sestavení úspěšně nedokončí, můžete sestavení ukončit tak, že akci události ukončíte jiným kódem než nula (0), což značí úspěšnou akci.
Příklad: Jak změnit informace o manifestu pomocí události po sestavení
Následující postup ukazuje, jak nastavit minimální verzi operačního systému v manifestu aplikace pomocí příkazu .exe volaný z události post-build (soubor .exe.manifest v adresáři projektu). Minimální verze operačního systému je čtyřdílné číslo, například 4.10.0.0. Provedete to tak, že příkaz změní <dependentOS>
oddíl manifestu:
<dependentOS>
<osVersionInfo>
<os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
</osVersionInfo>
</dependentOS>
Vytvoření příkazu .exe pro změnu manifestu aplikace
Vytvořte konzolovou aplikaci pro příkaz. V nabídce Soubor klikněte na položku Nový a potom klikněte na položku Projekt.
V dialogovém okně Nový projekt vyberte v uzlu Jazyka Visual Basic systém Windows a potom šablonu konzolové aplikace. Pojmenujte projekt
ChangeOSVersionVB
.V modulu 1.vb přidejte následující řádek do dalších
Imports
příkazů v horní části souboru:Imports System.Xml
V souboru
Sub Main
přidejte následující kód: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
Příkaz má dva argumenty. Prvním argumentem je cesta k manifestu aplikace (tj. složka, ve které proces sestavení vytvoří manifest, obvykle ProjectName.publish>).< Druhým argumentem je nová verze operačního systému.
V nabídce Sestavení klikněte na Sestavit řešení.
Zkopírujte soubor .exe do adresáře, jako je C:\TEMP\ChangeOSVersionVB.exe.
Potom vyvoláte tento příkaz v události po sestavení a změňte manifest aplikace.
Vyvolání události po sestavení za účelem změny manifestu aplikace
Vytvořte aplikaci pro Windows pro projekt, který se má publikovat. V nabídce Soubor klikněte na položku Nový a potom klikněte na položku Projekt.
V dialogovém okně Nový projekt v uzlu Visual Basic vyberte plochu Windows a potom šablonu aplikace model Windows Forms. Pojmenujte projekt
VBWinApp
.Pokud je projekt vybraný v Průzkumník řešení, klikněte v nabídce Projekt na příkaz Vlastnosti.
V Návrháři projektu přejděte na stránku Publikovat a nastavte umístění publikování na C:\TEMP.
Projekt publikujte kliknutím na Publikovat hned.
Soubor manifestu se sestaví a vloží do souboru C:\TEMP\VBWinApp_1_0_0_0\VBWinApp.exe.manifest. Chcete-li zobrazit manifest, klepněte pravým tlačítkem myši na soubor a klepněte na tlačítko Otevřít s, potom klepněte na tlačítko Vybrat program ze seznamu a potom klepněte na tlačítko Poznámkový blok.
Vyhledejte prvek
<osVersionInfo>
v souboru. Verze může být například:<os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
V Návrháři projektu přejděte na kartu Kompilace a kliknutím na tlačítko Události sestavení otevřete dialogové okno Události sestavení.
Do pole Příkazového řádku události po sestavení zadejte následující příkaz:
C:\TEMP\ChangeOSVersionVB.exe "$(TargetPath).manifest" 5.1.2600.0
Při sestavování projektu tento příkaz změní minimální verzi operačního systému v manifestu aplikace na 5.1.2600.0.
Makro
$(TargetPath)
vyjadřuje úplnou cestu pro vytvářený spustitelný soubor. Proto $(TargetPath).manifest určí manifest aplikace vytvořený v adresáři bin. Publikování zkopíruje tento manifest do umístění publikování, které jste nastavili dříve.Znovu publikujte projekt. Přejděte na stránku Publikovat a klikněte na Publikovat nyní.
Znovu zobrazte manifest. Chcete-li zobrazit manifest, přejděte do adresáře publikování, klepněte pravým tlačítkem myši na soubor a klepněte na tlačítko Otevřít s a potom vyberte program ze seznamu a potom klepněte na tlačítko Poznámkový blok.
Verze by teď měla číst:
<os majorVersion="5" minorVersion="1" buildNumber="2600" servicePackMajor="0" />