Aracılığıyla paylaş


Nasıl Yapılır: MSBuild Projelerinde Derleme Olaylarını Kullanma

Derleme olayı, MSBuild'in derleme işleminin belirli bir aşamasında gerçekleştirdiği bir komutdur. Derleme öncesi olayı derleme başlamadan önce gerçekleşir; bağlantı adımı başlamadan önce bağlantı öncesi olay gerçekleşir ve derleme başarıyla sona erdikten sonra derleme sonrası olay gerçekleşir. Derleme olayı yalnızca ilişkili derleme adımı gerçekleşirse gerçekleşir. Örneğin, bağlantı adımı çalışmazsa bağlantı öncesi olayı gerçekleşmez.

Üç derleme olayının her biri, yürütülen bir komut öğesi (<Command>) ve MSBuild derleme olayını gerçekleştirdiğinde görüntülenen bir ileti öğesi (<Message>) ile bir öğe tanım grubunda temsil edilir. Her öğe isteğe bağlıdır ve aynı öğeyi birden çok kez belirtirseniz, son oluşum önceliklidir.

Derleme olayının yürütülp yürütülmediğini göstermek için bir özellik grubunda isteğe bağlı bir derleme içinde kullanım öğesi (<build-eventUseInBuild>) belirtilebilir. Derlemede kullanım öğesinin içeriğinin değeri veya falseşeklindedirtrue. Varsayılan olarak, bir derleme olayı, ilgili derlemede kullanım öğesi olarak ayarlanmadığı falsesürece yürütülür.

Aşağıdaki tabloda her derleme olayı XML öğesi listelenir:

XML Öğesi Tanım
PreBuildEvent Bu olay derleme başlamadan önce yürütülür.
PreLinkEvent Bu olay, bağlantı adımı başlamadan önce yürütülür.
PostBuildEvent Bu olay, derleme tamamlandıktan sonra yürütülür.

Aşağıdaki tabloda derlemede kullanılan her öğe listelenir:

XML Öğesi Tanım
PreBuildEventUseInBuild Derleme öncesi olayının yürütülip yürütülmeyeceğini belirtir.
PreLinkEventUseInBuild Bağlantı öncesi olayının yürütülip yürütülmeyeceğini belirtir.
PostBuildEventUseInBuild Derleme sonrası olayının yürütülip yürütülmeyeceğini belirtir.

Örnek

Aşağıdaki örnek, İzlenecek Yol'da oluşturulan myproject.vcxproj dosyasının Project öğesinin içine eklenebilir: C++ Projesi Oluşturmak için MSBuild Kullanma. Derleme öncesi olay main.cpp dosyasının bir kopyasını oluşturur; bağlantı öncesi olay main.obj dosyasının bir kopyasını oluşturur ve derleme sonrası olay da myproject.exe dosyasının bir kopyasını oluşturur. Proje bir yayın yapılandırması kullanılarak oluşturulduysa derleme olayları yürütülür. Proje bir hata ayıklama yapılandırması kullanılarak oluşturulduysa, derleme olayları yürütülür.

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

Ayrıca bkz.

Komut satırında MSBuild - C++
İzlenecek yol: C++ Projesi Oluşturmak için MSBuild Kullanma