Dela via


Gör så här: Använda build-händelser i MSBuild-projekt

En bygghändelse är ett kommando som MSBuild utför i ett visst skede i byggprocessen. Förgenereringshändelsen inträffar innan bygget startar. händelsen före länkningen inträffar innan länksteget startar. och händelsen efter bygget inträffar när bygget har slutförts. En bygghändelse inträffar endast om det associerade byggsteget inträffar. Förlänkhändelsen inträffar till exempel inte om länksteget inte körs.

Var och en av de tre bygghändelserna representeras i en objektdefinitionsgrupp av ett kommandoelement (<Command>) som körs och ett meddelandeelement (<Message>) som visas när MSBuild utför bygghändelsen. Varje element är valfritt och om du anger samma element flera gånger har den senaste förekomsten företräde.

Ett valfritt use-in-build-element (<build-eventUseInBuild>) kan anges i en egenskapsgrupp för att ange om bygghändelsen körs. Värdet för innehållet i ett use-in-build-element är antingen true eller false. Som standard körs en bygghändelse såvida inte motsvarande use-in-build-element är inställt på false.

I följande tabell visas varje XML-element för bygghändelsen:

XML-element Beskrivning
PreBuildEvent Den här händelsen utförs innan bygget börjar.
PreLinkEvent Den här händelsen körs innan länksteget börjar.
PostBuildEvent Den här händelsen utförs när bygget har slutförts.

I följande tabell visas varje används i build-element :

XML-element Beskrivning
PreBuildEventUseInBuild Anger om händelsen ska köras före bygget .
PreLinkEventUseInBuild Anger om händelsen före länk ska köras.
PostBuildEventUseInBuild Anger om händelsen ska köras efter bygget .

Exempel

Följande exempel kan läggas till i project-elementet i myproject.vcxproj-filen som skapades i Genomgång: Använda MSBuild för att skapa ett C++-projekt. En förbyggnadshändelse gör en kopia av main.cpp; en förlänkningshändelse gör en kopia av main.obj; och en händelse efter bygget gör en kopia av myproject.exe. Om projektet skapas med hjälp av en versionskonfiguration körs bygghändelserna. Om projektet skapas med hjälp av en felsökningskonfiguration körs inte bygghändelserna.

<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>

Se även

MSBuild på kommandoraden – C++
Genomgång: Använda MSBuild för att skapa ett C++-projekt