My Extensions as Templates
في قالب My Extension كما هو الحال في جميع قوالب Visual Studio تكون جميع محددات القالب متوفرة وهي عبارة عن سلاسل نصية خاصة يمكن إدراجها آليا ضمن كود My Extension عندما يتم إضافتها للمشروع فـ $clrversion$ يتم استبدالها برقم النسخة الحالية لـ clr وفي حالة القالب Mu Extension سيتم استبدال $safeitemname$ بقيمة العنصر <DefaultName> في الملف الذي يحمل اللاحقة vstemplate والذي يساوي اسم الملف الذي يحوي كود القالب بدون لاحقته.
وأي شئ آخر يمكن عمله في قالب نظامي يمكنك عمله في القالب My Extension فضبط القيمة <Hidden> في الملف vstemplate إلى False يمكنك من إضافة القالب إلى صندوق الحوار Add New Item عندما تضيف العناصر للمشروع كما يمكنك إجبار إضافة مجمعات للمشروع عند إضافة القالب وذلك ضمن القسم <References> ويمكن إضافة عائلة من ملفات الكود عند انتهائها كالتي يتم إنشاؤها من قبل محرر نماذج ويندوز ذا بالإضافة إلى كود المستخدم.
كما توجد بعض الاختلافات الأساسية بين القوالب الأساسية وقوالب My Extensibility فلكي تمكن قالب العنصر Item Template كي يتم إدارتها من قبل صفحة My Extensions في مصمم مشاريع Visual Basic يجب عليك القيام بعدة خطوات لتعريفها بشكل ملائم.
في البداية يجب عليك إضافة العنصر <CustomDataSignature> للملف MyTemplate.vstemplate المتواجد في ملف zip الذي تم تصديره الذي يشير إلى أن قالب العنصر يجب معاملته كـ My Extension كما يجب عليك منع القالب من الفتح بشكل آلي عندما يتم إضافته للمشروع وذلك بإضافة بعض الصفات للعنصر <ProjectItem> بسبب أن كود MyExtension يجب أن يكون غير مرئي للمستخدم كما يجب عليك إضافة العنصر <Hidden> للملف MyTemplate.vstemplate كي لا يظهر القالب ضمن قائمة القوالب المثبتة عندما يختار المستخدم إضافة عناصر لمشروعه من خلال صندوق الحوار Add New Item وأخيرا عليك إضافة ملف باللاحقة customdata للرزمة وذلك لتوفير معلومات لا تنطبق على القوالب القياسية مثل unique Id و Version number و trigger assembly. ولعمل هذا عليك فك الملف ذو اللاحقة zip والقيام بالتعديلات المناسبة ثم إعادة ضغط الملفات الضرورية ثانية.
في البداية قم بفك محتويات القالب الذي قمنا بتصديره سابقا إلى مجلد فارغ ثم افتح الملف myTemplate.vstemplate وقم بالتعديلات كما في الكود
كود :
<VSTemplate Version="2.0.0"
xmlns=http://schemas.microsoft.com/developer/vstemplate/2005
Type="Item">
<TemplateData>
<DefaultName>MyValidation.vb</DefaultName>
<Name>MyValidation</Name>
<Description>Extends the My namespace with a set of string
validation methods.</Description>
<ProjectType>VisualBasic</ProjectType>
<SortOrder>10</SortOrder>
<Icon>TemplateIcon.ico</Icon>
<!-- Configures the template to not be shown as an option
when the user selects to add an item template to his project -->
<Hidden>true</Hidden>
<!-- Indicates it is to be treated as a My Extension. -->
<CustomDataSignature>Microsoft.VisualBasic.MyExtension
</CustomDataSignature>
</TemplateData>
<TemplateContent>
<References>
<Reference> <Assembly>System.Core</Assembly> </Reference>
</References>
<ProjectItem SubType="Code" TargetFileName="$fileinputname$.vb"
ReplaceParameters="true" OpenInEditor="false"
OpenInWebBrowser="false" OpenInHelpBrowser="false">MyValidation.vb
</ProjectItem>
</TemplateContent>
</VSTemplate>
أنشئ ملفا جديدا - سوف نضيفه للرزمة لاحقا - وسمه MyValidation.customdata وافتحه بواسطة الـ Notepad وأضف إليه الكود التالي
كود :
<VBMyExtensionTemplate
ID="MyValidationMyNamespaceExtension"
Version="1.0.0.0" />
والواصفة AssemblyFullName التي تم حذفها في هذا المثال تشير إلى أنه عندما يتم إضافة هذا المجمع للمشروع فسوف يتم دعوة المستخدم لإضافة My Extension وعندما يزال المجمع من المشروع فسوف يتم دعوة المستخدم لإزالة My Extension ولإضافة مجمع قدح Trigger Assembly يمكن إضافة قسم كالتالي للملف customdata
كود :
<VBMyExtensionTemplate
ID="MyValidationMyNamespaceExtension"
Version="1.0.0.0"
AssemblyFullName="System.Windows.Forms" />
قم الآن بإعادة نسخ جميع الملفات لداخل الملف zip باستخدام Windows Explorer