Procedura: utilizzo di eventi di compilazione in progetti MSBuild

Un evento di compilazione è un comando eseguito da MSBuild in una fase specifica del processo di compilazione. L'evento di pre-compilazione si verifica prima dell'avvio della compilazione; l'evento di pre-collegamento si verifica prima dell'avvio del passaggio di collegamento e l'evento di post-compilazione si verifica al termine della compilazione. Un evento di compilazione si verifica solo se viene eseguito il passaggio di compilazione associato. Ad esempio, l'evento di pre-collegamento non si verifica se il passaggio di collegamento non viene eseguito.

Ognuno dei tre eventi di compilazione è rappresentato in un gruppo di definizioni di elementi da un elemento di comando (<Command>) eseguito e un elemento messaggio (<Message>) visualizzato quando MSBuild esegue l'evento di compilazione. Ogni elemento è facoltativo e, se si specifica più volte lo stesso elemento, l'ultima occorrenza ha la precedenza.

Un elemento use-in-build facoltativo (<eventoUseInBuild> di compilazione) può essere specificato in un gruppo di proprietà per indicare se l'evento di compilazione viene eseguito. Il valore del contenuto di un elemento use-in-build è true o false. Per impostazione predefinita, viene eseguito un evento di compilazione a meno che l'elemento use-in-build corrispondente non sia impostato su false.

La tabella seguente elenca ogni elemento XML dell'evento di compilazione:

Elemento XML Descrizione
PreBuildEvent Questo evento viene eseguito prima dell'inizio della compilazione.
PreLinkEvent Questo evento viene eseguito prima dell'inizio del passaggio di collegamento.
PostBuildEvent Questo evento viene eseguito al termine della compilazione.

La tabella seguente elenca ogni elemento use-in-build :

Elemento XML Descrizione
PreBuildEventUseInBuild Specifica se eseguire l'evento di pre-compilazione .
PreLinkEventUseInBuild Specifica se eseguire l'evento di pre-collegamento .
PostBuildEventUseInBuild Specifica se eseguire l'evento di post-compilazione .

Esempio

L'esempio seguente può essere aggiunto all'interno dell'elemento Project del file myproject.vcxproj creato in Procedura dettagliata: Uso di MSBuild per creare un progetto C++. Un evento di pre-compilazione crea una copia di main.cpp, un evento di pre-collegamento crea una copia di main.obj e un evento di post-compilazione crea una copia di myproject.exe. Se il progetto viene compilato usando una configurazione di versione, gli eventi di compilazione vengono eseguiti. Se il progetto viene compilato usando una configurazione di debug, gli eventi di compilazione non vengono eseguiti.

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

Vedi anche

MSBuild dalla riga di comando - C++
Procedura dettagliata: Uso di MSBuild per creare un progetto C++