كيفية القيام بما يلي: استخدام معالجات مع قوالب مشروع

Visual StudioيوفرIWizardالواجهة ذلك، عند تطبيق ، يتيح إمكانية تشغيل تعليمات برمجية مخصصة عند قيام مستخدم بإنشاء مشروع من قالب.

يمكن استخدام تخصيص قالب مشروع إلى:

  • عرض واجهة المستخدم المخصصة التي يجمعها إدخال إلى parameterize القالب المستخدم.

  • إضافة قيم المعلمة إلى استخدامه في القالب.

  • إضافة ملفات إضافية إلى القالب.

  • تنفيذ الإجراء ظاهريًا أي المسموح بها من قِبل Visual Studioطراز كائن الأتمتة على المشروع.

IWizardتسمى أساليب الواجهة في أوقات متعددة بينما يتم إنشاؤه المشروع بدء بمجرد قيام مستخدم بالنقر فوق ‏‏موافق في مربع حوار مشروع جديد. يسمى كل أسلوب الواجهة إلى لوصف اليؤشر التي كان عليه سابقاً. على سبيل المثال، Visual Studioالمكالمات RunStartedفوراً عند بدء تشغيله لإنشاء المشروع ، مما يجعل الموقع جيد لكتابة تعليمات برمجية مخصصة لتجميع إدخال المستخدم.

تستخدم معظم تعليمات برمجية التي تكتبها للمعالجات مخصصة DTEالكائن هو كائن الرئيسي في Visual Studioطراز كائن Automation ليخصص المشروع. للحصول على أكثر راجع معلومات حول طراز كائن Automation توسيع بيئة لـ Visual Studioو التنفيذ التلقائي والمرجع الامتداد.

إنشاء معالج قوالب المخصصة

يوضح هذا الموضوع كيفية إنشاء معالج مخصص يتم فتح نموذج Windows قبل إنشاء المشروع. النموذج يسمح للمستخدم بتمت الإضافة القيمة معلمة مخصصة ثم سيضاف إلى تعليمات برمجية المصدر أثناء إنشاء المشروع. الخطوات الأساسية كل منها مفسّرة بالتفصيل كما يلي.

لإنشاء معالج قالب مخصص

  1. إنشاء تجميع يقوم بتطبيق IWizardالواجهة.

  2. يثّبت التجميع في العمومية مخزن تجميع مؤقت.

  3. إنشاء مشروع واستخدم المعالج يصدّر قالب إلى إنشاء قالب من المشروع.

  4. تعديل القالب بإضافة على WizardExtensionالعنصر الموجود في الملف .vstemplate لربط القالب إلى التجميع الذي يطبق IWizard.

  5. إنشاء مشروع جديد باستخدام معالج مخصص.

تطبيق IWizard

الخطوة الأولى في العملية إلى إنشاء تجميع يقوم بتطبيق IWizard. يستخدم هذا التجميع RunStartedأسلوب لعرض نموذج Windows التي يسمح للمستخدم بإضافة القيمة معلمة مخصصة ثم التي سيتم استخدامها أثناء إنشاء المشروع.

ملاحظة

يستخدم هذا المثال #Visual Cإلى تنفيذ IWizard، على الرغم من أنه يمكنك أيضًا استخدام Visual Basic.

لتنفيذ IWizard

  1. إنشاء مشروع مكتبة فئة جديد.

  2. إنشاء الفئة التي تطبق IWizard واجهة. راجع تعليمات برمجية أدناه للحصول على #Visual Cمثال بشكل كامل مطبقة IWizardالواجهة.

يحتوي هذا المثال على تعليمات برمجية ملفين: IWizardImplementation، فئة التي تطبقIWizardالواجهة، وUserInputForm، نموذج Windows للحصول على إدخال المستخدم.

فئة IWizardImplementation

IWizardImplementationالفئة تحتوي على تطبيقات أسلوب كل عضو في من IWizard. في هذا المثال، فقط RunStartedأسلوب تنفيذ المهمة. أساليب أخرى لا تقم بأي شئ أو إرجاع true.

RunStartedالأسلوب يقبل المعلمات الأربعة:

  • Objectالمعلمة التي يمكن أن يتم تحويل إلى الجذر _DTEالكائن تتيح إمكانية يخصص المشروع.

  • Dictionary<TKey, TValue>المعلمة التي تحتوي على مجموعة من الكل المعلمات المعرفة في القالب. للحصول على أكثر المعلومات على معلمات القالب راجع قالب المعلمات.

  • WizardRunKindالمعلمة التي تحتوي على معلومات حول استخدام نوع هذا القالب.

  • Objectالصفيف الذي يحتوي على مجموعة من المعلمات التي تم تمريرها إلى المعالج بواسطة Visual Studio.

هذا المثال إضافة القيمة معلمة من نموذج إدخال المستخدم إلى Dictionary<TKey, TValue>المعلمة. كل مثيل $custommessage$سيتم استبدال معلمة في المشروع مع نص تم إدخالها بواسطة المستخدم.

using System;
using System.Collections.Generic;
using Microsoft.VisualStudio.TemplateWizard;
using System.Windows.Forms;
using EnvDTE;

namespace CustomWizard
{
    public class IWizardImplementation:IWizard
    {
        private UserInputForm inputForm;
        private string customMessage;

        // This method is called before opening any item that 
        // has the OpenInEditor attribute.
        public void BeforeOpeningFile(ProjectItem projectItem)
        {
        }

        public void ProjectFinishedGenerating(Project project)
        {
        }
        
        // This method is only called for item templates,
        // not for project templates.
        public void ProjectItemFinishedGenerating(ProjectItem 
            projectItem)
        {
        }

        // This method is called after the project is created.
        public void RunFinished()
        {
        }

        public void RunStarted(object automationObject,
            Dictionary<string, string> replacementsDictionary,
            WizardRunKind runKind, object[] customParams)
        {
            try
            {
                // Display a form to the user. The form collects 
                // input for the custom message.
                inputForm = new UserInputForm();
                inputForm.ShowDialog();

                customMessage = inputForm.get_CustomMessage();

                // Add custom parameters.
                replacementsDictionary.Add("$custommessage$", 
                    customMessage);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

        // This method is only called for item templates,
        // not for project templates.
        public bool ShouldAddProjectItem(string filePath)
        {
            return true;
        }        
    }
}

نموذج إدخال المستخدم

نموذج إدخال المستخدم توفير نموذج بسيط لإدخال معلمة مخصصة. يحتوي النموذج على مربع نص باسم textBox1الزر باسم button1. عندما يتم النقر فوق الزر, النص من مربع نص المخزنة في customMessageالمعلمة.

لإضافة نموذج Windows إلى الحل

  1. في مشروع قائمة ، انقر فوق إضافة عنصر جديد .

  2. انقر فوق نموذج Windows ، اسم الملف UserInputForm.cs، ثم انقر فوق ‏‏موافق .

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace CustomWizard
{
    public partial class UserInputForm : Form
    {
        private string customMessage;

        public UserInputForm()
        {
            InitializeComponent();
        }
       
        public string get_CustomMessage()
        {
            return customMessage;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            customMessage = textBox1.Text;

            this.Dispose();
        }
    }
}

يثّبت التجميع في العمومية مخزن تجميع مؤقت.

التجميع يقوم بتطبيق IWizardيجب توقيع الاسم المميز وتثبيتها في العمومية مخزن تجميع مؤقت.

يثّبت التجميع في العمومية مخزن تجميع مؤقت.

  1. توقيع التجميع باسم قوي لمزيد من المعلومات، راجع كيفية: تسجيل تجميع باسم قوية أو كيفية القيام بما يلي: التوقيع على التجميع (‏‫Visual Studio).

  2. يثّبت التجميع باسم واضح في ذاكرة تخزين مؤقتة للتجميع العمومي. لمزيد من المعلومات، راجع كيفية: قم بتثبيت تجميع في ذاكرة التخزين المؤقتة للتجميع العمومي.

إنشاء مشروع إلى استخدام كقالب

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

لإنشاء نموذج المشروع

  1. لإنشاء تطبيق وحدة تحكم جديد

  2. في Mainأسلوب التطبيق، قم بإضافة الخط التالي من تعليمات برمجية.

    Console.WriteLine("$custommessage$");
    

    المعلمة $custommessage$يتم استبدال النص الذي تم إدخاله في نموذج إدخال المستخدم عند إنشاء مشروع من قالب.

  3. في ملف، القائمة، انقر فوق "تصدير قالب".

  4. في المعالج يصدّر قالب انقر فوق قالب Project الخاص بـ, تحديد المشروع الصحيحة وانقر فوق التالي.

  5. في المعالج يصدّر قالب Enter الزر الزر معلومات وصفية حول القالب وتحديد تلقائياً استيراد القالب إلى ‏‫Visual Studio خانة فحص ثم انقر فوق إنهاء.

    القالب الآن يظهر في مربع حوار مشروع جديد ولكن لا يستخدم معالج مخصص.

يوضح المثال التالي ‏‏رمز الملف الكاملة قبل تصدير إلى قالب.

using System;
using System.Collections.Generic;
using System.Text;

namespace TemplateProject
{
    class WriteMessage
    {
        static void Main(string[] args)
        {
            Console.WriteLine("$custommessage$");
        }
    }
}

تعديل "قالب"

والآن بعد أن يتم إنشاء القالب كما يظهر في مربع حوار مشروع جديد, يجب تعديل بحيث يستخدم التجميع الذي قمت بإنشائه في الخطوات السابقة.

إضافة معالج مخصص إلى قالب

  1. حدد ملف .zip الذي يحتوي على القالب.

    1. من القائمة أدوات، انقر فوق خيارات.

    2. انقر فوق مشاريع وحلولها.

    3. قراءة مربع النص ‏‫Visual Studio المستخدم المشروع قوالب الموقع. لمزيد من المعلومات، راجع عام، مشاريع وحلول، مربع حوار الخيارات.

    بشكل افتراضي ، هذا الدليل هو \My Documents\Visual Studio 2008\Templates\ProjectTemplates\.

  2. يفك ضغط ملف .zip.

  3. قم بفتح الملف ‎ .vstemplateفي

  4. بعد TemplateContentالعناصر، إضافة عنصر WizardExtension (قوالب ‏‫Visual Studio)العنصر ذو اسم قوي الخاص بك التجميع معالج مخصص. للحصول على مزيد من المعلومات حول البحث عن الاسم المميز الخاص بك التجميع راجع كيفية: عرض محتويات ذاكرة التخزين المؤقتة للتجميع العموميو كيفية: مرجع تجميع المسماة قوية.

    المثال التالي يوضح تعريف الفئة.

    <WizardExtension>
        <Assembly>CustomWizard, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=fa3902f409bb6a3b</Assembly>
        <FullClassName>CustomWizard.IWizardImplementation</FullClassName>
    </WizardExtension>
    

استخدام معالج مخصص

الآن يمكنك إنشاء مشروع من القالب واستخدام معالج مخصص.

لاستخدام معالج مخصص

  1. من القائمة ملف، انقر فوق مشروع جديد.

  2. في مربع حوار مشروع جديد ، بحث القالب الخاص بك نوع اسم, انقر فوق ‏‏موافق .

    فتح نموذج إدخال المستخدم المعالج.

  3. اكتب القيمة لمعلمة مخصصة ثم انقر فوق الزر.

    إغلاق نموذج إدخال المستخدم المعالج وإعادة إنشاء مشروع من القالب.

  4. في مستكشف الحلول, ينقر على اليمين ‏‏رمز الملف المصدر ثم انقر فوق عرض تعليمات برمجية.

    لاحظ أن $custommessage$تم استبدال مع نص تم إدخاله في المعالج المستخدم الإدخال النموذج.

راجع أيضًا:

المرجع

عنصر WizardExtension (قوالب ‏‫Visual Studio)

IWizard

موارد أخرى

إجراءات قالب متقدم