Gewusst wie: Verwenden von Buildereignissen in MSBuild-Projekten
Ein Buildereignis ist ein Befehl, der MSBuild in einer bestimmten Phase im Buildprozess ausführt. Das Präbuildereignis tritt auf, bevor das Buildereignis gestartet wird. Das Prälinkereignis tritt auf, bevor der Verknüpfungsschritt gestartet wird, und das Postbuildereignis tritt auf, nachdem das Buildereignis erfolgreich abgeschlossen wurde. Ein Buildereignis tritt nur auf, wenn der zugeordnete Buildschritt auftritt. Das Prälinkereignis tritt beispielsweise nicht auf, wenn der Verknüpfungsschritt nicht ausgeführt wird.
Jedes der drei Buildereignisse wird in einer Elementdefinitionsgruppe durch ein Command-Element (<Command>
) dargestellt, das ausgeführt wird, und ein Message-Element (<Message>
), das angezeigt wird, wenn MSBuild das Buildereignis ausführt. Jedes Element ist optional, und Sie können dasselbe Element mehrmals ausführen, wobei das letzte Vorkommen Vorrang hat.
Ein optionales use-in-build-Element (<
build-eventUseInBuild>
) kann in einer Eigenschaftengruppe angegeben werden, um anzugeben, dass das Buildereignis ausgeführt wird. Der Wert des Inhalts eines use-in-build-Elements lautet entweder true
oder false
. Ein Buildereignis wird standardmäßig ausgeführt, es sei denn, das zugehörige use-in-build-Element ist auf false
festgelegt.
In der folgenden Tabelle ist jedes XML-Element des Buildereignisses aufgelistet:
XML-Element | Beschreibung |
---|---|
PreBuildEvent |
Dieses Ereignis wird vor Beginn des Builds ausgeführt. |
PreLinkEvent |
Dieses Ereignis wird vor dem Verknüpfungsschritt ausgeführt. |
PostBuildEvent |
Diese Ereignis wird nach Beendigung des Builds ausgeführt. |
In der folgenden Tabelle sind alle use-in-build-Elemente aufgeführt:
XML-Element | Beschreibung |
---|---|
PreBuildEventUseInBuild |
Gibt an, ob das Präbuildereignis ausgeführt werden soll |
PreLinkEventUseInBuild |
Gibt an, ob das Prälinkereignis ausgeführt werden soll |
PostBuildEventUseInBuild |
Gibt an, ob das Postbuildereignis ausgeführt werden soll |
Beispiel
Das folgende Beispiel kann innerhalb des Project-Elements der datei myproject.vcxproj hinzugefügt werden, die in Walkthrough erstellt wurde: Verwenden von MSBuild zum Erstellen eines C++-Projekts. Ein Präbuildereignis erstellt eine Kopie von „main.cpp“. Ein Prälinkereignis erstellt eine Kopie von „main.obj“, und ein Postbuildereignis erstellt eine Kopie von „myproject.exe“. Wenn das Projekt mithilfe einer Releasekonfiguration erstellt wird, werden die Buildereignisse ausgeführt. Wenn das Projekt mit einer Debugkonfiguration erstellt wird, werden die Buildereignisse nicht ausgeführt.
<ItemDefinitionGroup>
<PreBuildEvent>
<Command>copy $(ProjectDir)main.cpp $(ProjectDir)copyOfMain.cpp</Command>
<Message>Making a copy of main.cpp </Message>
</PreBuildEvent>
<PreLinkEvent>
<Command>copy $(ProjectDir)$(Configuration)\main.obj $(ProjectDir)$(Configuration)\copyOfMain.obj</Command>
<Message>Making a copy of main.obj</Message>
</PreLinkEvent>
<PostBuildEvent>
<Command>copy $(ProjectDir)$(Configuration)\$(TargetFileName) $(ProjectDir)$(Configuration)\copyOfMyproject.exe</Command>
<Message>Making a copy of myproject.exe</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<PreBuildEventUseInBuild>true</PreBuildEventUseInBuild>
<PreLinkEventUseInBuild>true</PreLinkEventUseInBuild>
<PostBuildEventUseInBuild>true</PostBuildEventUseInBuild>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<PreBuildEventUseInBuild>false</PreBuildEventUseInBuild>
<PreLinkEventUseInBuild>false</PreLinkEventUseInBuild>
<PostBuildEventUseInBuild>false</PostBuildEventUseInBuild>
</PropertyGroup>
Siehe auch
MSBuild on the Command Line – C++ (C++: MSBuild in der Befehlszeile)
Exemplarische Vorgehensweise: Verwenden von MSBuild zum Erstellen eines C++-Projekts