Udostępnij za pośrednictwem


Porady: korzystanie z kreatora z szablonami projektu

Visual Studio zawiera IWizard interfejs, który, po wdrożeniu, umożliwia uruchamianie kodu niestandardowego, gdy użytkownik tworzy projekt z szablonu.

Dostosowywanie szablonu projektu może służyć do:

  • Wyświetl niestandardowy interfejs użytkownika, który gromadzi dane wejściowe użytkownika do parametryzacji szablonu.

  • Dodaj wartości parametru, aby użyć w szablonie.

  • Dodaj dodatkowe pliki do szablonu.

  • Wykonywaj praktycznie dowolne akcje dozwolone przez Visual Studio modelu obiektowym automatyzacji w projekcie.

IWizard metody interfejsu nazywane są w różnym czasie, podczas gdy projekt jest tworzony, od początku tak szybko, jak tylko użytkownik kliknie OK w oknie dialogowym Nowy projekt.Każda metoda interfejsu nosi nazwę, aby opisać punkt, w którym jest wywoływana.Na przykład Visual Studio wywołuje RunStarted natychmiast po rozpoczęciu tworzenia projektu, dzięki czemu jest dobrym miejscem do napisania kodu niestandardowego w celu zbierania danych wejściowych użytkownika.

Większość kodu napisanego dla niestandardowych kreatorów użyje obiektu DTE, który jest głównym obiektem w modelu automatyzacji obiektu Visual Studio, aby dostosować projekt.Aby uzyskać więcej informacji o modelu obiektu automatyzacji, zobacz Rozszerzanie środowiska Visual Studio i Odwołanie do automatyzacji i rozszerzalności.

Tworzenie kreatora niestandardowego szablonu

W tym temacie opisano sposób tworzenia niestandardowego kreatora, który służy do otwierania formularza systemu Windows przed utworzeniem projektu.Formularz pozwala użytkownikowi na dodawanie wartości parametru niestandardowego, który zostanie następnie dodany do kodu źródłowego podczas tworzenia projektu.Główne kroki, z których każdy jest szczegółowo wyjaśniony, są następujące.

Aby utworzyć kreator niestandardowego szablonu

  1. Utwórz zestaw, który implementuje interfejs IWizard.

  2. Zainstaluj zestaw w globalną pamięć podręczną zestawów.

  3. Utwórz projekt i użyj kreatora Eksportuj szablon, aby utworzyć szablon z projektu.

  4. Modyfikuj szablon przez dodanie elementu WizardExtension w pliku .vstemplate, aby połączyć szablon z zestawem, który implementuje IWizard.

  5. Utwórz nowy projekt za pomocą kreatora niestandardowego.

Wdrażanie IWizard

Pierwszym krokiem w procesie jest utworzenie zestawu, który implementuje IWizard.Używa tego zestawu RunStarted metoda wyświetlania formularza systemu Windows, który umożliwia użytkownikowi dodanie wartości parametru niestandardowego, który następnie będzie używany podczas tworzenia projektu.

[!UWAGA]

W poniższym przykładzie użyto Visual C# do wdrożenia IWizard, chociaż można także użyć Visual Basic.

Aby wdrożyć IWizard

  1. Utwórz nowy projekt biblioteki klas.

  2. Utwórz klasę, która implementuje interfejs IWizard.Zobacz poniższy kod dla Visual C# przykładu w pełni zaimplementowanego IWizard interfejsu.

Ten przykład zawiera dwa pliki kodu: IWizardImplementation, klasy, która implementuje IWizard interfejs, i UserInputForm, formularz systemu Windows do wprowadzania danych przez użytkownika.

Klasa IWizardImplementation

IWizardImplementation klasa zawiera implementacje metod dla każdego członka IWizard.W tym przykładzie, tylko metoda RunStarted wykonuje zadanie.W przypadku innych metod, nie rób nic albo przywróć true.

RunStarted metoda przyjmuje cztery parametry:

  • Parametr Object, który może być rzutowany na obiekt katalogu głównego _DTE umożliwiając dostosowanie projektu.

  • Parametr Dictionary, który zawiera zbiór wszystkich parametrów wstępnie zdefiniowanych w szablonie.Aby uzyskać więcej informacji na parametrów szablonu, zobacz Parametry szablonu.

  • Parametr WizardRunKind, który zawiera informacje o rodzaju używanego szablonu.

  • Tablica Object, która zawiera zestaw parametrów przekazanych do kreatora przez Visual Studio.

Ten przykład dodaje wartości parametru z formularza wejściowego użytkownika do Dictionary parametru.Każde wystąpienie parametru $custommessage$ w projekcie zostanie zastąpione tekstem wprowadzonym przez użytkownika.Musisz dodać następujące zestawy do odwołań projektu:

  1. EnvDTE.dll

  2. Microsoft.VisualStudio.TemplateWizardInterface.dll

  3. System.Windows.Forms.dll

Ważna uwagaWażne

UserInputForm używany w tym przykładzie zdefiniowano w poniższej sekcji.

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;
        }        
    }
}

Formularz wprowadzania użytkownika

Formularz wprowadzania użytkownika zapewnia prosty formularz Wprowadzanie parametru niestandardowego.Formularz zawiera pole tekstowe o nazwie textBox1 i przycisk o nazwie button1.Po kliknięciu przycisku, tekst z pola tekstowego jest przechowywany w customMessage parametrze.

Aby dodać formularz systemu Windows do rozwiązania

  • Dodaj następujący kod do pliku, który zawiera kreatora wdrażania.
public partial class UserInputForm : Form
{
    private string customMessage;
    private TextBox textBox1;

    public UserInputForm()
    { 
        textBox1 = new TextBox();
        this.Controls.Add(textBox1);
    }

    public string get_CustomMessage()
    {
        return customMessage;
    }

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        customMessage = textBox1.Text;
        this.Dispose();
    }
}

Instalowanie zestawu do globalnej pamięci podręcznej zestawów

Zestaw, który implementuje IWizard musi być podpisany przy użyciu silnej nazwy i zainstalowany w globalna pamięć podręcznej zestawów.

Aby zainstalować zestaw w globalnej pamięć podręcznej zestawów.

  1. Przypisz silną nazwę zestawowi.Aby uzyskać więcej informacji, zobacz Porady: podpisywanie zestawu silną nazwą lub Jak: podpisywanie zestawu (Visual Studio).

  2. Zainstaluj zestaw o silnej nazwie w globalną pamięć podręczną zestawów.Aby uzyskać więcej informacji, zobacz Porady: instalowanie zestawu w globalnej pamięci podręcznej zestawów.

Tworzenie projektu do użycia jako szablonu

W tym przykładzie, projekt użyty jako szablonu jest aplikacją konsoli, która wyświetla komunikat określony w postaci danych wejściowych użytkownika niestandardowego kreatora.

Aby utworzyć projekt przykładowy

  1. Utwórz nową aplikację konsoli Visual C#.

  2. W metodzie Main aplikacji dodaj następujący wiersz kodu.

    Console.WriteLine("$custommessage$");
    

    Parametr $custommessage$ zostaje zastąpiony tekstem wprowadzonym w formularzu wejściowym użytkownika podczas tworzenia projektu z szablonu.

  3. W menu Plik kliknij przycisk Eksportuj szablon.

  4. W kreatorze Eksportuj szablon kliknij Szablon projektu, wybierz odpowiedni projekt i kliknij Dalej.

  5. W kreatorze Eksportuj szablon, wpisz opisowe informacje o szablonie, wybierz pole wyboru Automatycznie zaimportuj szablon do programu Visual Studio i kliknij Zakończ.

    Szablon pojawi się w oknie dialogowym Nowy projekt, ale nie będzie używał niestandardowego kreatora.

W poniższym przykładzie pokazani pełny kod pliku zanim został on wyeksportowany do szablonu.

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

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

Modyfikowanie szablonu

Teraz, gdy szablon został utworzony i pojawia się w oknie dialogowym Nowy projekt, należy tak go zmodyfikować, aby korzystał z zestawu, który został utworzony w poprzednich krokach.

Aby dodać do szablonu niestandardowego kreatora

  1. Zlokalizuj plik .zip zawierający szablon.

    1. W menu Narzędzia kliknij Opcje.

    2. Kliknij Projekty i rozwiązania.

    3. Przeczytaj Lokalizacja szablonów projektu Visual Studio użytkownika pole tekstowe.

    Domyślnie ta lokalizacja to My Documents\Visual Studio Version\Templates\ProjectTemplates.

  2. Wyodrębnij plik .zip.

  3. Otwórz plik .vstemplate w Visual Studio.

  4. Po elemencie TemplateContent dodaj element WizardExtension — Element (szablony Visual Studio) przy użyciu silnej nazwy zestawu niestandardowego kreatora.Aby uzyskać więcej informacji na temat znajdowania silnej nazwy zestawu, zobacz Porady: wyświetlanie zawartości globalnej pamięci podręcznej zestawówi Porady: odwołanie do zestawu o silnej nazwie.

    Poniższy przykład pokazuje element WizardExtension.

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

Aby użyć niestandardowego kreatora

Możesz teraz utworzyć projekt na podstawie szablonu i za pomocą niestandardowego kreatora.

Aby użyć niestandardowego kreatora

  1. W menu Plik kliknij opcję Nowy projekt.

  2. W oknie dialogowym Nowy projekt zlokalizuj szablon, wpisz nazwę, a następnie kliknij przycisk OK.

    Zostanie otwarty formularz wprowadzania użytkownika kreatora.

  3. Wpisz wartość dla parametru niestandardowego, a następnie kliknij przycisk.

    Formularz wprowadzania użytkownika Kreatora zostanie zamknięty, a projekt jest utworzony na podstawie szablonu.

  4. W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy plik kodu źródłowego i kliknij polecenie Wyświetl kod.

    Należy zauważyć, że $custommessage$ zostało zastąpione tekstem wprowadzonym w formularzu kreatora wprowadzania danych przez użytkownika.

Zobacz też

Informacje

WizardExtension — Element (szablony Visual Studio)

IWizard

Inne zasoby

Dostosowywanie szablonów projektu i elementu