كيفية القيام بما يلي: استخدام بنية الأحداث في مشاريع ‏‫MSBuild

حدث بنية هو أمر ذلك MSBuildينفذ في مرحلة معينة في عملية التصنيع. يحدث حدث قبل البناء قبل بدء الإنشاء؛ ويقع حدث قبل الربط قبل بدء الخطوة الارتباط؛ و ينشر-إنشاء حدث بعد انتهاء الإنشاء بنجاح. بناء حدوث فقط في حالة حدوث الخطوة الإنشاء المقترنة. على سبيل المثال، pre-ارتباط لا يتم إجراء حدث في حالة ارتباط لم يتم تشغيل الخطوة.

كل من الثلاثة بنية أحداث يتمثل في مجموعة تعريف عنصر بعنصر أمر ( <Command>) التي تم تنفيذها وعنصر رسالة ( <Message>) هو عرض متى MSBuildينفذ بنية حدث. كل عنصر هو اختيارية، وإذا قمت بتحديد نفس العنصر أكثر من مرة، أخير الأسبقية.

يمكن تحديد استخدم في البنية اختيارية عنصر ( <الإنشاء-حدثUseInBuild> ) في مجموعة خصائص للإشارة إلى ما إذا كان حدث البنية هو تنفيذها. القيمة المحتوى هو استخدم-في-عنصر بنية أما trueأو false. بشكل افتراضي، يتم تنفيذ حدث بناء إلا إذا تم تعيين العنصر استخدم في بناء المطابق له $ $ $ $ إلى false.

يلي جدول قم بسرد كل عنصر XML بنية حدث:

عنصر XML

الوصف

PreBuildEvent

ينفذ هذا حدث قبل بنية يبدأ.

PreLinkEvent

ينفذ هذا حدث قبل ارتباط يبدأ الخطوة.

PostBuildEvent

ينفذ هذا حدث بعد بنية ينتهي.

يسرد الجدول التالي كل استخدام-بنية العنصر:

عنصر XML

الوصف

PreBuildEventUseInBuild

تحديد ما إذا كان إلى ينفذ حدث قبل البناء.

PreLinkEventUseInBuild

تحديد ما إذا كان إلى ينفذ حدث قبل الربط.

PostBuildEventUseInBuild

تحديد ما إذا كان سيتم ينفذ حدث بعد البناء.

مثال

يلي مثال يمكن إضافته من داخل العنصر مشروع للملف myproject.vcxproj التي تم إنشاؤها في الإرشادات التفصيلية: استخدام ‏‫MSBuild إلى إنشاء مشروع C + + Visual. يجعل حدثاً قبل البناء نسخ 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 + + Visual

موارد أخرى

‏‫MSBuild (Visual C + +)