تجميع ‏‫MSBuild

MSBuild has the ability إلى divide العنصر lists في different فئات, أو batches, based تشغيل العنصر بيانات التعريف, و run a الهدف أو مهمة واحد الوقت مع each batch.

مهمة Batching

مهمة batching allows you إلى simplify your مشروع ملفات بواسطة providing a way إلى divide العنصر lists في different batches و pass each of those batches في a مهمة separately. This means that a ملف مشروع فقط needs إلى have the مهمة و its السمات declared once, even though it can be تشغيل several مرة/مرات.

You specify that you want MSBuild إلى perform batching مع a مهمة بواسطة using the %(ItemMetaDataName) notation في واحد of the مهمة السمات. The following مثال splits the Example العنصر قائمة في batches based تشغيل the Color العنصر بيانات التعريف القيمة, و passes each of the batches إلى the MyTask مهمة separately.

ملاحظة

If you do not مرجع the العنصر قائمة elsewhere في the مهمة السمات, أو the بيانات التعريف اسم may be ambiguous, you can استخدم the %(ItemCollection.ItemMetaDataName) notation إلى fully qualify the العنصر بيانات التعريف القيمة إلى استخدم for batching.

<Project
    xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    
    <ItemGroup>
        <Example Include="Item1">
            <Color>Blue</Color>
        </Example>
        <Example Include="Item2">
            <Color>Red</Color>
        </Example>
    </ItemGroup>

    <Target Name="RunMyTask">
        <MyTask
            Sources = "@(Example)"
            Output = "%(Color)\MyFile.txt"/>
    </Target>

</Project>

For المزيد specific batching أمثلة, see عنصر بيانات التعريف في مهمة تجميع.

تجميع الهدف

MSBuild checks if the inputs و مخرجات of a الهدف are لأعلى-إلى-التاريخ قبل it runs the الهدف. If كلاهما inputs و مخرجات are لأعلى-إلى-التاريخ, the الهدف هو skipped. If a مهمة inside of a الهدف uses batching, MSBuild needs إلى determine if the inputs و مخرجات for each batch of عناصر هو لأعلى-إلى-التاريخ. Otherwise, the الهدف هو executed every الوقت it هو hit.

ما يلي مثال يظهر Targetالعنصر الذي يحتوي على Outputsالسمة بواسطة%( من ItemMetaDataName) منهج. MSBuildسيتم تقسيمExampleعنصر قائمة في دفعات تستندColorبيانات تعريف العنصر، و تحليل الطابع الزمني لملفات الإخراج لكل دفعة. إذا كانت المخرجات من دفعة غير محدثة، الهدف هو تشغيل. Otherwهوe، الهدف هو تخطي.

<Project
    xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    
    <ItemGroup>
        <Example Include="Item1">
            <Color>Blue</Color>
        </Example>
        <Example Include="Item2">
            <Color>Red</Color>
        </Example>
    </ItemGroup>

    <Target Name="RunMyTask"
        Inputs="@(Example)"
        Outputs="%(Color)\MyFile.txt">
        <MyTask
            Sources = "@(Example)"
            Output = "%(Color)\MyFile.txt"/>
    </Target>

</Project>

مثال آخر من تجميع الهدف، راجع بيانات تعريف العنصر في تجميع الهدف.

خاصية دالات باستخدام بيانات التعريف

تجميع يمكن التحكم بواسطة خاصية دالات التي تضمين بيانات التعريف. على سبيل المثال،

$([System.IO.Path]::Combine($(RootPath),%(Compile.Identity)))

يستخدم Combineإلى ضم مسار مجلد جذر باستخدام path. عنصر ترجمة

خاصية دالات قد لا تظهر ضمن قيم بيانات التعريف. على سبيل المثال،

%(Compile.FullPath.Substring(0,3))

هو غير مسموح به.

لمزيد من المعلومات حول الدالات الخصائص، راجع خاصية دالات.

راجع أيضًا:

المرجع

عنصر ItemMetadata (MSBuild)

المبادئ

مفاهيم متقدم ‏‫MSBuild

موارد أخرى

MSBuild Concepts

مرجع MSBuild