如何:在 MSBuild 專案中使用建置事件

建置事件是 MSBuild 在建置程式中特定階段執行的命令。 建置前事件會在建 置開始之前發生; 連結步驟開始之前發生預先連結 事件;建 置後事件會在建 置成功結束之後發生。 只有在相關聯的建置步驟發生時,才會發生建置事件。 例如,如果連結步驟未執行,則不會發生連結前事件。

這三個建置事件中的每一個都會以執行之命令元素 ( <Command> ) 的專案定義群組來表示,以及 MSBuild 執行建置事件時 所顯示的訊息專案 ( <Message> )。 每個元素都是選擇性的,而且如果您多次指定相同的元素,則最後一個出現專案會優先。

您可以在屬性群組中指定選擇性的 use-in-build 元素 ( < build-event UseInBuild> ),以指出是否已執行組建事件。 使用中建置專案的內容 值為 或 falsetrue 根據預設,除非建置中的對應 專案設定為 false ,否則會執行建 置事件。

下表列出每個組建事件 XML 元素:

XML 元素 描述
PreBuildEvent 此事件會在建置開始之前執行。
PreLinkEvent 此事件會在連結步驟開始之前執行。
PostBuildEvent 此事件會在建置完成之後執行。

下表列出每個建置中的 use-in-build 元素:

XML 元素 描述
PreBuildEventUseInBuild 指定是否要執行 建置 前事件。
PreLinkEventUseInBuild 指定是否要執行 連結 前事件。
PostBuildEventUseInBuild 指定是否要執行 建置 後事件。

範例

下列範例可以在逐步解說:使用 MSBuild 建立 C++ 專案 建立之 myproject.vcxproj 檔案的 Project 元素內新增。 置前事件會建立 main.cpp 的複本; 預先連結 事件會建立 main.obj 的複本;而 置後事件會建立 myproject.exe 的複本。 如果專案是使用發行組態建置,則會執行組建事件。 如果使用偵錯組態建置專案,則不會執行建置事件。

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

另請參閱

命令列上的 MSBuild - C++
逐步解說:使用 MSBuild 建立 C++ 專案