Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Buildereignisse in Visual Basic können zum Ausführen von Skripts, Makros oder anderen Aktionen als Teil des Kompilierungsprozesses verwendet werden. Vor-Build-Ereignisse treten vor der Kompilierung auf; Nach-Build-Ereignisse treten nach der Kompilierung auf.
So legen Sie Prä- und Postbuildereignisse fest
Um Buildereignisse für ein Visual Basic .NET Core- oder .NET 5- oder höher-Projekt anzuzeigen oder zu ändern, klicken Sie mit der rechten Maustaste auf den Projektknoten, und wählen Sie Eigenschaften (oder drücken Sie ALT-+EINGABETASTE), und wechseln Sie dann zu Kompilieren>Ereignisse. Geben Sie die gewünschte Befehlszeile ein. Das Arbeitsverzeichnis ist das Ausgabeverzeichnis.
Führen Sie für .NET Framework-Projekte die folgenden Schritte aus:
Wenn ein Projekt im Lösungs-Explorerausgewählt ist, klicken Sie im 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 Kommandozeilenargumente für Ihre Pre-Build- oder Post-Build-Aktion ein und klicken Sie dann auf OK.
Buildereignisse werden im Dialogfeld Buildereignisse angegeben, das über die Seite Kompilieren des Projekt-Designers verfügbar ist.
So legen Sie Prä- und Postbuildereignisse fest
Angeben eines Buildereignisses
Wenn ein Projekt im Lösungs-Explorerausgewählt ist, klicken Sie im 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 Kommandozeilenargumente für Ihre Pre-Build- oder Post-Build-Aktion ein und klicken Sie dann auf OK.
Anmerkung
Fügen Sie eine call
Anweisung vor allen Postbuildbefehlen hinzu, die Dateien ausführen .bat
. Beispiel: call C:\MyFile.bat
oder call C:\MyFile.bat call C:\MyFile2.bat
.
Anmerkung
Wenn Ihr Vorabbuild- oder Postbuildereignis nicht erfolgreich abgeschlossen wurde, können Sie den Build beenden, indem Sie die Ereignisaktion mit einem anderen Code als Null (0) beenden, der eine erfolgreiche Aktion angibt.
Sie können in den Skripts auf "Makros" (tatsächlich MSBuild-Eigenschaftsnamen) verweisen. Um auf eine Eigenschaft zu verweisen, verwenden Sie die Syntax $(PropertyName)
, die durch den Eigenschaftswert ersetzt wird, wenn das Ereignisskript ausgeführt wird. Eine Liste der häufig verwendeten Werte finden Sie unter "ALLGEMEINE MSBuild-Eigenschaften". Es kann auch andere Eigenschaften geben, die in der Projektdatei, in importierten Dateien innerhalb der Projektdatei, in Umgebungsvariablen oder über die Befehlszeile mithilfe der MSBuild-Option während Befehlszeilen-Builds definiert sind.
Beispiel: Ändern von Manifest-Informationen mithilfe eines Post-Build-Ereignisses
Das folgende Verfahren zeigt, wie Sie die Mindestversion des Betriebssystems im Anwendungsmanifest mithilfe eines .exe
Befehls festlegen, der von einem Postbuildereignis (der .exe.manifest
Datei im Projektverzeichnis) aufgerufen wird. Die Mindestversion des Betriebssystems ist eine vierteilige Nummer wie 4.10.0.0. Dazu ändert der Befehl den abschnitt <dependentOS>
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 Neu, und klicken Sie dann auf Projekt.
Wählen Sie im Dialogfeld Neues Projekt im Knoten Visual BasicWindows und dann die Vorlage Konsolenanwendung aus. Benennen Sie das Projekt
ChangeOSVersionVB
.Fügen Sie in Module1.vbdie folgende Zeile zu den anderen
Imports
Anweisungen am Anfang der Datei hinzu:Imports System.Xml
Fügen Sie den folgenden Code in
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 verwendet zwei Argumente. Das erste Argument ist der Pfad zum Anwendungsmanifest (d. h. der Ordner, in dem der Buildprozess das Manifest erstellt, in der Regel <ProjectName>.publish). Das zweite Argument ist die neue Betriebssystemversion.
Klicken Sie im Menü Erstellen auf Projektmappe erstellen.
Kopieren Sie die .exe Datei in ein Verzeichnis wie C:\TEMP\ChangeOSVersionVB.exe.
Rufen Sie als Nächstes diesen Befehl in einem Postbuildereignis auf, um das Anwendungsmanifest zu ändern.
Um ein Post-Build-Ereignis aufzurufen, um das Anwendungsmanifest zu ändern
Erstellen Sie eine Windows-Anwendung, damit das Projekt veröffentlicht werden kann. Klicken Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.
Wählen Sie im Dialogfeld Neues Projekt im Knoten Visual BasicWindows Desktop und dann die Vorlage Windows Forms App aus. Benennen Sie das Projekt
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öffentlichenklicken.
Die Manifestdatei wird erstellt und in C:\TEMP\VBWinApp_1_0_0_0\VBWinApp.exe.manifestabgelegt. Klicken Sie mit der rechten Maustaste auf die Datei, und klicken Sie dann auf Öffnen mit und Programm aus einer Liste auswählen und anschließend auf Editor, um das Manifest anzuzeigen.
Suchen Sie in der Datei nach dem
<osVersionInfo>
-Element. Zum Beispiel könnte die Version lauten:<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 die Mindestversion des Betriebssystems im Anwendungsmanifest auf 5.1.2600.0.
Das
$(TargetPath)
Makro drückt den vollständigen Pfad für die erstellte ausführbare Datei aus.$(TargetPath).manifest
Gibt daher das im Bin-Verzeichnis erstellte Anwendungsmanifest an. Beim Veröffentlichen wird dieses Manifest an den zuvor festgelegten Veröffentlichungsort kopiert.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. Wechseln Sie zum Veröffentlichungsverzeichnis, klicken Sie mit der rechten Maustaste auf die Datei, und klicken Sie auf Öffnen mit und dann Programm aus einer Liste auswählen und anschließend auf Editor, um das Manifest anzuzeigen.
Die Version sollte jetzt folgendes lesen:
<os majorVersion="5" minorVersion="1" buildNumber="2600" servicePackMajor="0" />