Пошаговое руководство. Создание мастера
Мастера, такие как Мастер надстройки, — это программы, которые шаг за шагом проводят пользователя через последовательность действий для выполнения сложной, повторяющейся или трудновыполнимой задачи. Например, в Windows мастера используются для установки подключения к сетевым ресурсам, подключения к принтерам и т.д.
В Visual Studio мастера, как правило, задают ряд вопросов, запрашивая ввод пользователя, а затем используют результаты для создания кода. При этом мастера не всегда имеют пользовательский интерфейс. Их можно запрограммировать для незаметного создания кода в фоновом режиме.
Имеется три различных типа мастеров:
Мастера создания проекта. Как говорит само название, эти мастера служат для создания нового кода для определенного типа проекта в качестве отправной точки для пользователя, после которой можно начать добавлять собственный код. Это наиболее часто используемый тип мастера.
Мастера добавления нового элемента. Эти мастера служат для добавления новых элементов, таких как веб-формы, текстовые файлы, HTML-страницы, XML-страницы и т.д. к проекту.
Пользовательские мастера. Эти мастера не вызываются из диалогового окна. Они вызываются непосредственно из надстроек, макросов или других типов кода. У них может быть, а может и отсутствовать пользовательский интерфейс. В любом случае, они создают код. Этот тип мастера используется реже всего.
Независимо от типа мастера, все они имеют общие черты.
Они являются объектами .NET, реализующими интерфейс IDTWizard и имеющими связанный метод, Execute, содержащий код, который должен выполняться мастером.
Для отображения мастеров в Visual Studio используются файлы VSZ.
Все они создают код или выполняют какую-либо другую задачу.
Внешний вид элементов в создаваемых мастерах можно контролировать. Мастера часто состоят из одного или нескольких окон или страниц. Страницы могут содержать описательное изображение, например, в верхней или с левой стороны страницы, описание-надпись, инструкции и область, в которую могут быть помещены элементы навигации, такие как кнопки Назад и Далее.
Процесс создания мастеров в Visual C++ несколько отличается от создания стандартных мастеров Visual Studio. Дополнительные сведения о создании мастеров для Visual C++ см. в разделах Разработка мастера и Создание пользовательского мастера.
Примечание
Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от текущих настроек или выпуска.Эти процедуры были разработаны с обычными параметрами разработки.Чтобы изменить настройки, в меню Сервис выберите команду Импорт и экспортпараметров.Дополнительные сведения см. в разделе Работа с параметрами.
Пример простого макроса
На этом рисунке показана панель Мастера надстроек — типа мастера создания проекта, который проводит пользователя по последовательности шагов для создания надстройки. Внешний вид мастеров можно изменять, но Мастер надстроек является хорошим примером стиля стандартного типа мастера. Созданные мастера становятся доступными шаблонами в диалоговых окнах Создать проект или Добавить новый элемент.
Далее показаны способы создания простого мастера и, как вариант, добавления пользовательского значка к нему.
Чтобы создать простой мастер в Visual Basic и Visual C#
Запустите Visual Studio от имени администратора. Регистрация мастера требует обновления реестра, поэтому необходим этот уровень привилегий.
Создайте новый проект библиотеки классов и назовите его MyNewWizard.
Добавьте ссылки на EnvDTE и EnvDTE80 к проекту.
Для этого щелкните правой кнопкой мыши проект и выберите Добавить ссылку. На вкладке .NET диалогового окна Добавить ссылку щелкните EnvDTE и EnvDTE80 и нажмите ОК.
В модуле класса включите ссылки на EnvDTE и EnvDTE80 и реализуйте интерфейс IDTWizard. Для этого примера Visual C# необходимо также добавить ссылку на System.Windows.Forms и System.Runtime.InteropServices.
Imports EnvDTE
Imports EnvDTE80
Public Class Class1
Implements IDTWizard
using System;
using System.Collections.Generic;
using System.Text;
using EnvDTE;
using EnvDTE80;
using System. Windows.Forms;
using System.Runtime.InteropServices;
namespace MyNewWizard
{
[ComVisible(true)]
[Guid("20184B81-7C38-4E02-A1E3-8D564EEC2D25"),
ProgId("MyNewWizard.Class1")]
public class Class1 : IDTWizard
{
}
}
При добавлении оператора Implements в Visual Basic поместите курсор в конец строки и нажмите ВВОД для автоматического создания процедуры метода Execute. При этом для Visual C# необходимо добавить процедуру Execute вручную:
public class Class1 : IDTWizard
{
public void Execute(object Application,
int hwndOwner, ref object[] contextParams,
ref object[] customParams,
ref EnvDTE.wizardResult retval)
В процедуру Execute добавьте код, который должен выполняться мастером. В этом примере будет добавлено простое окно сообщения.
Должно получиться следующее:
Imports EnvDTE Imports EnvDTE80 Public Class Class1 Implements IDTWizard Public Sub Execute(ByVal Application As Object, ByVal _ hwndOwner As Integer, ByRef ContextParams() As Object, ByRef _ CustomParams() As Object, ByRef retval As EnvDTE.wizardResult) _ Implements EnvDTE.IDTWizard.Execute MsgBox("The wizard is now running.") End Sub End Class
using System.Text; using EnvDTE; using EnvDTE80; using System.Windows.Forms; using System.Runtime.InteropServices; namespace MyNewWizardCS { public class Class1 : IDTWizard { public void Execute(object Application, int hwndOwner, ref object[] contextParams, ref object[] customParams, ref EnvDTE.wizardResult retval) { MessageBox.Show("The wizard is now running."); } } }
Процедура Execute вызывается при запуске мастера.
В обозревателе решений щелкните правой кнопкой мыши проект и выберите команду Свойства, чтобы открыть страницу Свойства проекта, перейдите на вкладку Построение и внизу страницы установите флажок Регистрация для COM-взаимодействия.
В файле AssemblyInfo.cs найдите атрибут ComVisible и присвойте ему значение true.
Выполните построение проекта, чтобы создать библиотеку DLL, выбрав в меню Построение команду Построить решение.
Создайте текстовый файл VSZ для мастера с именем MyNewWizard.vsz.
Для этого создайте копию существующего файла VSZ (например, любого файла в каталоге <каталог установки Visual Studio>\VC#\CSharpProjectItems\Windows Forms), а затем переименуйте копию в "MyNewWizard.vsz".
VSZ-файл — это текстовый файл, позволяющий Visual Studio распознавать мастер и отображать его в диалоговых окнах Создать проект или Добавить новый элемент. Параметру Wizard необходимо присвоить progID (Project.Classname) проекта или GUID. Дополнительные сведения см. в разделе Настройка VSZ-файлов для запуска мастеров.
Примечание
Дополнительно можно создать файл VSDIR для мастера.Этот файл содержит сведения, отображаемые в качестве описания мастера в диалоговых окнах Добавитьновый проект или Добавитьновый файл.В нем можно также указать значок и определить его местоположение в списке.Дополнительные сведения см. в разделе Добавление мастеров в диалоговые окна "Добавить элемент" и "Создать проект" при помощи файлов VSDIR.
Замените содержимое файла MyNewWizard.vsz следующим кодом.
VSWizard 7.0 Wizard=MyNewWizard.Class1 Param=First Item Param=Second Item
Сохраните новый VSZ-файл в каталоге, где должен располагаться мастер.
Для данного примера мастер должен отображаться в диалоговом окне Добавление нового элемента для проектов Visual Basic, поэтому VSZ-файл необходимо сохранить в следующем каталоге: <каталог_установки_Visual_Studio>\VB\VBProjectItems.
Выйдите из среды Visual Studio и запустите ее повторно.
При этом Visual Studio считает новый VSZ-файл.
Создайте новый проект Visual Basic, такой как проект приложения Windows.
Щелкните правой кнопкой мыши проект, выберите команду Добавить элемент, затем Новый элемент.
В диалоговом окне Добавить новые элементы должен появиться новый мастер (MyNewWizard).
Щелкните мастер и нажмите кнопку Добавить.
Появится сообщение "Мастер выполняется".
Чтобы отобразить пользовательский значок для нового мастера
Поместите файл значка с таким же именем базового файла, что и имя DLL-файла, но с расширением ICO, в каталог с файлом мастера.
Например, если мастер называется MyNewWizard.dll, то именем файла значка ICO должно быть MyNewWizard.ico.
- или -
Если создан файл VSDir, укажите в нем путь к файлу значка (ICO).
См. также
Задачи
Практическое руководство. Создание надстройки
Ссылки
Команды и переключатели Visual Studio
Основные понятия
Диаграмма модели объектов автоматизации
Добавление мастеров в диалоговые окна "Добавить элемент" и "Создать проект" при помощи файлов VSDIR
Настройка VSZ-файлов для запуска мастеров