共用方式為


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

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

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

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

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

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

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

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

範例

下列範例可以在逐步解說:使用 MSBuild 建立C++ Project 中建立之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++ 專案