Angeben von Buildereignissen (Visual Basic)
Buildereignisse in Visual Basic können für das Ausführen von Skripts, Makros oder anderen Aktionen als Teil des Kompilierungsprozesses verwendet werden. Präbuildereignisse treten vor der Kompilierung auf, während Postbuildereignisse nach der Kompilierung auftreten.
Buildereignisse werden im Dialogfeld Buildereignisse angegeben, das über die Seite Kompilieren des Projekt-Designers verfügbar ist.
Hinweis
Visual Basic Express unterstützt keine Eingabe von Buildereignissen. Dies wird nur in der Vollversion von Visual Studio unterstützt.
So legen Sie Prä- und Postbuildereignisse fest
Angeben eines Buildereignisses
Klicken Sie bei ausgewähltem Projekt im Projektmappen-Explorerim Menü Projekt auf Eigenschaften.
Klicken Sie auf die Registerkarte Kompilieren.
Klicken Sie auf die Schaltfläche Buildereignisse, um das Dialogfeld Buildereignisse zu öffnen.
Geben Sie die Befehlszeilenargumente für Ihre Prä- oder Postbuildaktion ein, und klicken Sie dann auf OK.
Hinweis
Fügen Sie allen Postbuildbefehlen, die BAT-Dateien ausführen, eine
call
-Anweisung hinzu. Zum Beispiel:call C:\MyFile.bat
odercall C:\MyFile.bat call C:\MyFile2.bat
.Hinweis
Wenn Ihr Prä- oder Postbuildereignis nicht erfolgreich abgeschlossen wird, können Sie den Build abschließen, indem Sie Ihre Ereignisaktion mit einem Code, der nicht 0 (null) ist, beenden. Dies gibt eine erfolgreiche Aktion an.
Beispiel: Ändern von Manifestinformationen unter Verwendung eines Postbuildereignisses
In der folgenden Prozedur wird veranschaulicht, wie Sie das mindestens erforderliche Betriebssystem im Anwendungsmanifest mit einem EXE-Befehl festlegen, der von einem Postbuildereignis aufgerufen wird (die EXE.MANIFEST-Datei im Projektverzeichnis). Das mindestens erforderliche Betriebssystem ist eine Zahlenfolge mit vier Teilen wie z.B. 4.10.0.0. Um dies zu erreichen, ändert der Befehl den <dependentOS>
-Abschnitt des Manifests:
<dependentOS>
<osVersionInfo>
<os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
</osVersionInfo>
</dependentOS>
So erstellen Sie einen EXE-Befehl zum Ändern des Anwendungsmanifests
Erstellen Sie eine Konsolenanwendung für den Befehl. Klicken Sie im Menü Datei auf Neuund dann auf Projekt.
Klicken Sie im Dialogfeld Neues Projekt im Knoten Visual Basic auf Windows, und wählen Sie dann die Vorlage Konsolenanwendung aus. Benennen Sie das Projekt mit
ChangeOSVersionVB
.Fügen Sie in Module1.vb die folgende Zeile in die anderen
Imports
-Anweisungen am Anfang der Datei ein:Imports System.Xml
Fügen Sie den folgenden Code zu
Sub Main
hinzu: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
Der Befehl benötigt zwei Argumente. Beim ersten Argument handelt es sich um den Pfad zum Anwendungsmanifest (also den Ordner, in dem der Buildprozess das Manifest erstellt, üblicherweise <Projektname>.publish). Beim zweiten Argument handelt es sich um die neue Version des Betriebssystems.
Klicken Sie im Menü Erstellen auf Projektmappe erstellen.
Kopieren Sie die EXE-Datei z.B. in das Verzeichnis C:\TEMP\ChangeOSVersionVB.exe.
Rufen Sie anschließend den Befehl in einem Postbuildereignis auf, um das Anwendungsmanifest zu ändern.
Aufrufen eines Postbuildereignisses zum Ändern des Anwendungsmanifests
Erstellen Sie eine Windows-Anwendung für das zu veröffentlichende Projekt. Klicken Sie im Menü Datei auf Neuund dann auf Projekt.
Klicken Sie im Dialogfeld Neues Projekt im Knoten Visual Basic auf Windows-Desktop, und wählen Sie dann die Vorlage Windows Forms-App aus. Benennen Sie das Projekt mit
VBWinApp
.Klicken Sie für das im Projektmappen-Explorer ausgewählte Projekt im Menü Projekt auf Eigenschaften.
Navigieren Sie im Projekt-Designer zu der Seite Veröffentlichen, und legen Sie den Veröffentlichungsort auf C:\TEMP fest.
Veröffentlichen Sie das Projekt, indem Sie auf Jetzt veröffentlichen klicken.
Dann wird die Manifestdatei erstellt und unter C:\TEMP\VBWinApp_1_0_0_0\VBWinApp.exe.manifest gespeichert. Klicken Sie mit der rechten Maustaste auf die Datei, und klicken Sie dann auf Öffnen mit > Programm aus einer Liste auswählen und anschließend auf Editor, um das Manifest anzuzeigen.
Durchsuchen Sie die Datei nach dem
<osVersionInfo>
-Element. Die Version kann z.B. folgende sein:<os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />
Navigieren Sie im Projekt-Designer zu der Registerkarte Kompilieren, und klicken Sie auf die Schaltfläche Buildereignisse, um das Dialogfeld Buildereignisse zu öffnen.
Geben Sie im Feld Befehlszeile für Postbuildereignis den folgenden Befehl ein:
C:\TEMP\ChangeOSVersionVB.exe "$(TargetPath).manifest" 5.1.2600.0
Wenn Sie das Projekt erstellen, ändert dieser Befehl das mindestens erforderliche Betriebssystem im Anwendungsmanifest in 5.1.2600.0.
Das
$(TargetPath)
-Makro gibt den vollständigen Pfad für die ausführbare Datei an, die erstellt wird. Deshalb gibt $(TargetPath).manifest das Anwendungsmanifest an, das im bin-Verzeichnis erstellt wird. Durch die Veröffentlichung wird dieses Manifest an den Veröffentlichungsspeicherort kopiert, den Sie in einem vorherigen Schritt festgelegt haben.Veröffentlichen Sie das Projekt erneut. Wechseln Sie zur Seite Veröffentlichen, und klicken Sie anschließen auf Jetzt veröffentlichen.
Zeigen Sie das Manifest erneut an. Klicken Sie mit der rechten Maustaste auf die Datei, wechseln Sie zum Veröffentlichungsverzeichnis, und klicken Sie auf Öffnen mit > Programm aus einer Liste auswählen und anschließend auf Editor, um das Manifest anzuzeigen.
Jetzt sollte die Version folgendermaßen lauten:
<os majorVersion="5" minorVersion="1" buildNumber="2600" servicePackMajor="0" />