ملفات تعريف العنصر
MSBuild2.0 يتيح إعلان ثابت من عناصر في ملف مشروع باستخدامItemGroup عنصر. ومع ذلك، يمكن تمت الإضافة بيانات التعريف فقط على المستوى العنصر، حتى إذا كانت بيانات التعريف هو مماثلة لكافة العناصر. MSBuildيقدم 3.5 عنصر مشروع باسمItemDefinitionGroup التي overcomes هذا التحديد. ItemDefinitionGroup يسمح لك بتعريف التعيين من الملفات تعريف عنصر، إضافة الافتراضي قيم بيانات التعريف لكافة عناصر الموجودة في نوع العنصر المسمى.
يظهر العنصر ItemDefinitionGroup مباشرة بعد العنصر المشروع من ملف مشروع. توفير ملفات تعريف العنصر الوظائف التالية:
يمكنك تعريف عمومي الافتراضي بيانات التعريف للعناصر خارج هدف. أن هو، يتم تطبيق نفس بيانات التعريف لكافة عناصر من النوع المحدد.
العنصر يمكن أن يكون لأنواع ملفات تعريف متعددة. عند إضافى بيانات التعريف مواصفات تضاف إلى النوع، مواصفات أخير لها الأسبقية. (بيانات التعريف يتبع نفس الترتيب استيراد كما يلي خصائص).
يمكن أن تكون بيانات التعريف الإضافية. تشغيل سبيل المثال، يتم تكديس قيم CDefines شرطيا، استناداً إلى الخصائص التي يتم تعيين. على سبيل المثال، MT;STD_CALL;DEBUG;UNICODE.
يمكن تمت إزالته بيانات التعريف.
يمكن استخدام الشروط إلى التحكم بتضمين بيانات التعريف.
قيم الافتراضية بيانات تعريف العنصر
بيانات إعلان العنصر الذي هو المعرفة في ItemDefinitionGroup هو إعلان بيانات الإعلان الافتراضي. لا يتم يطبق ملفات التعريف إلا إذا عرفت عناصر التي يستخدمها ItemGroup تحتوي على قيم بيانات التعريف.
ملاحظة
في العديد من الأمثلة في هذا الموضوع، يظهر عنصر ItemDefinitionGroup ولكن تم تجاهل تعريفه ItemGroup المطابق للإيضاح.
بيانات التعريف المعرفة بوضوح في ItemGroup لها الأسبقية على بيانات تعريف في ItemDefinitionGroup. بيانات تعريف في ItemDefinitionGroup هو فقط لبيانات التعريف غير معرّف في ItemGroup. فعلى سبيل المثال:
<ItemDefinitionGroup>
<i>
<m>m1</m>
<n>n1</n>
</i>
</ItemDefinitionGroup>
<ItemGroup>
<i Include="a">
<o>o1</o>
<n>n2</n>
</i>
</ItemGroup>
في هذا المثال، يتم تطبيق بيانات التعريف الافتراضية "m" على العنصر "i" لأنه لم يتم تعريف بيانات التعريف "m" بشكل واضح بواسطة العنصر "i". ومع ذلك، لا يتم تطبيق بيانات التعريف الافتراضية "n" على العنصر "i" لأنه تم تعريف بيانات التعريف "n" بالفعل بواسطة العنصر "i".
ملاحظة
أسماء عناصر XML ومعلمة تحسس حالة الأحرف. عنصر بيانات التعريف وأسماء العناصر/خاصيه ليست حساسة لحالة الأحرف. ولذلك، يجب التعامل مع عناصر ItemDefinitionGroup التي تحتوي على الأسماء التي تختلف فقط بواسطة cكـe كـ ItemGroup نفسه.
المصادر القيمة
قيم بيانات التعريف التي هو في ItemDefinitionGroup يمكن أن تأتي من عدة المصادر مختلفة، كما يلي:
خاصية PropertyGroup
العنصر من DefinitionGroup العنصر
تحويل العنصر تشغيل عنصر ItemDefinitionGroup
متغير بيئة
خاصية العمومية (من الأمر MSBuild.exe خط)
خاصية محجوزة
معروف بيانات التعريف تشغيل عنصر من ItemDefinitionGroup
مقطع CDATA <! [CDATA [أى شىء هنا هو لم يتم تحليل]] >
ملاحظة
بيانات تعريف العنصر من ItemGroup هو غير مفيدة في إعلان بيانات تعريف ItemDefinitionGroup لأنه يتم معالجة العناصر ItemDefinitionGroup قبل عناصر ItemGroup.
المجاميع و متعددة ملفات تعريف
عندما تقوم بإضافة ملفات تعريف أو استخدم ItemDefinitionGroups متعددة، تذكر ما يلي:
مواصفات بيانات تعريف إضافى هو تمت الإضافة إلى النوع.
مواصفات أخير لها الأسبقية.
عندما يكون لديك ItemDefinitionGroups متعددة، كل المواصفات التالية بإضافة بيانات التعريف الخاصة بها إلى تعريف السابقة. فعلى سبيل المثال:
<ItemDefinitionGroup>
<i>
<m>m1</m>
<n>n1</n>
</i>
</ItemDefinitionGroup>
<ItemDefinitionGroup>
<i>
<o>o1</o>
</i>
</ItemDefinitionGroup>
في ترتيب هو سبيل المثال، ملفات التعريف "ا" هو تمت الإضافة إلى "m" و "n".
بالإضافة إلى قيم بيانات التعريف المعرفة مسبقاً يمكن أيضا تمت الإضافة. فعلى سبيل المثال:
<ItemDefinitionGroup>
<i>
<m>m1</m>
</i>
</ItemDefinitionGroup>
<ItemDefinitionGroup>
<i>
<m>%(m);m2</m>
</i>
</ItemDefinitionGroup>
في ترتيب هو المثال، قيمة بيانات تعريف "m" (m1) المعرفة مسبقاً هو تمت الإضافة إلى القيمة الجديدة (m2)، حيث القيمة النهائية هو "m1، m2".
ملاحظة
قد يحدث ذلك أيضا في ItemDefinitionGroup نفسه.
عند يمنع بيانات التعريف المعرفة مسبقاً، مواصفات الأخيرة الأسبقية. في المثال التالي، ينتقل القيمة النهائية لبيانات التعريف "m" من "m1" إلى "m1a".
<ItemDefinitionGroup>
<i>
<m>m1</m>
</i>
</ItemDefinitionGroup>
<ItemDefinitionGroup>
<i>
<m>m1a</m>
</i>
</ItemDefinitionGroup>
استخدام الشروط في ItemDefinitionGroup
يمكنك استخدام شروط في ItemDefinitionGroup إلى التحكم بتضمين بيانات التعريف. فعلى سبيل المثال:
<ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
<i>
<m>m1</m>
</i>
</ItemDefinitionGroup>
في ترتيب هو الحالة، بيانات التعريف الافتراضي "m1" العنصر "i" هو فقط إذا مُضمن القيمة خاصية "التكوين" هو "تصحيح".
ملاحظة
فقط محلي يتم اعتماد مراجع بيانات التعريف في الشروط.
قم بالرجوع إلى بيانات التعريف المعرفة في الأسبق. ItemDefinitionGroup تكون محلية إلى العنصر، وليس في مجموعة تعريف. هو نطاق مراجع هي الخاصة بالعنصر. فعلى سبيل المثال:
<ItemDefinitionGroup>
<test>
<yes>1</yes>
</test>
<i>
<m Condition="'%(test.yes)'=='1'">m1</m>
</i>
</ItemDefinitionGroup>
في هذا مثال، يشير العنصر "i" العنصر "اختبار" في الشرط.
تجاوز و حذف بيانات التعريف
يمكن إبطال بيانات التعريف التي تم تعريفها في عنصر ItemDefinitionGroup عنصر ItemDefinitionGroup لاحق بتعيين القيمة بيانات التعريف إلى فارغ. يمكنك أيضا فاعلية يحذف بيانات التعريف العنصر بتعيينها إلى القيمة فارغ. فعلى سبيل المثال:
<ItemDefinitionGroup>
<i>
<m>m1</m>
</i>
</ItemDefinitionGroup>
<ItemDefinitionGroup>
<i>
<m></m>
</i>
</ItemDefinitionGroup>
العنصر "i" لا يزال يحتوي على بيانات تعريف "m"، ولكن قيمتها هو الآن فارغ.
نطاق بيانات التعريف
ItemDefinitionGroups أن يكون لديك نطاق عمومي في تعريف و الخصائص العمومية أينما المعرفة. الافتراضي يمكن أن تكون ملفات تعريف بيانات التعريف في ItemDefinitionGroup self-referential. على سبيل المثال، يستخدم ما يلي بسيط بيانات التعريف المرجع:
<ItemDefinitionGroup>
<i>
<m>m1</m>
<m>%(m);m2</m>
</i>
</ItemDefinitionGroup>
يمكنك أيضا استخدام مرجع مؤهل لبيانات تعريف:
<ItemDefinitionGroup>
<i>
<m>m1</m>
<m>%(i.m);m2</m>
</i>
</ItemDefinitionGroup>
ومع ذلك، ما يلي هو غير صالح:
<ItemDefinitionGroup>
<i>
<m>m1</m>
<m>@(x)</m>
</i>
</ItemDefinitionGroup>
تبدأ في MSBuild3.5, ItemGroups يمكن أن يكون self-referential. فعلى سبيل المثال:
<ItemGroup>
<item Include="a">
<m>m1</m>
<m>%(m);m2</m>
</item>
</ItemGroup>