Поделиться через


Пошаговое руководство: Создание VSPackage (часть 1 из 4)

Можно добавить функциональные возможности в Visual Studio путем создания VSPackage. Поскольку VSPackage модуль программного обеспечения, его можно распределять другим людям, чтобы они могли расширения Visual Studio на своих собственных компьютерах.

С помощью шаблона пакета Visual Studio можно выполнить проект, для которого уже заданы исходные файлы и файлы конфигурации, необходимые для создания VSPackage. Проект содержит файл, который определяет класс, имя при создании проекта. Этот класс, унаследованный от управляемого класса с именем .NET Framework пакета (MPF) Packageвключает атрибуты, которые определяют, как VSPackage должно работать в Visual Studio. Класс пакета также содержит код инициализации и другой код в качестве обработчиков команд меню. Этот класс в VSPackage.

В этом пошаговом руководстве учебные материалы по созданию VSPackage и настраивать следующим образом:

  • Создайте VSPackage с помощью шаблона пакета.

  • Реализуйте обработчик команд меню.

  • Добавление сочетания клавиш.

  • Добавление пользовательских сведений в Visual Studio и экран-заставке О программе диалоговое окно.

Это пошаговое руководство является частью ряда, изучите, как расширить интегрированной среды разработки (ide) Visual Studio. Дополнительные сведения см. в разделе Пошаговые руководства по Visual Studio для настройки с помощью VSPackages.

Обязательные компоненты

Чтобы выполнить это пошаговое руководство, необходимо устанавливать SDK для Visual Studio 2010.

Примечание

Дополнительные сведения о пакете SDK для Visual Studio см. в разделе интеграция SDK Visual Studio.Чтобы узнать, как загрузить пакет SDK для Visual Studio см. в разделе Центр разработчиков расширяемости Visual Studio на веб-сайте MSDN.

Расположения шаблона для шаблона пакета Visual Studio

Шаблон пакета Visual Studio можно найти в следующих местах в Создать проект диалоговое окно:

  1. Под моделью расширяемости Visual Basic. Язык по умолчанию для проекта Visual Basic.

  2. Под расширяемостью c#. Язык по умолчанию для проекта c#.

  3. Под другой моделью расширяемости типов проектов. Язык по умолчанию для проекта C++.

Создать с помощью шаблона пакетов VSPackage

В этом подразделе показано, как создать решение VSPackage в Visual Studio.

Создать простое решение VSPackage

  1. Создание пакета VSPackage, используя шаблон проекта Visual Studio.

  2. На странице приветствия, нажмите кнопку Далее.

  3. На Выбрать язык программирования выберите страницу Visual c# OR Visual Basicвыберите Создать новый файл ключа для подписывания сборки, а затем нажмите кнопку Далее.

  4. На Базовые сведения о пакете VSPackage страницы в поле имя введите VSPackage FirstPackageи примите остальные значения по умолчанию. Название компании и имя проекта будут объединены для создания пространство имен для пакета.

    Основная информация VSPackage

    Нажмите кнопку Далее.

  5. На Выберите параметры пакета VSPackage выберите страницу Команда меню, а затем нажмите кнопку Далее.

  6. На Параметры команды страницы в Имя команды окно, тип Первая команда. (Этот текст будет отображаться в меню в Visual Studio.) в Идентификатор команды окно, тип cmdidFirstCommand. (Этот идентификатор используется в коде для указания команды.)

    Диалоговое окно параметров команды

    Нажмите кнопку Далее.

  7. На Выбрать параметры тестирования выберите страницу Готово.

    Шаблон создает проект Visual Studio, содержащего основные функциональные возможности. Можно попробовать ее, нажав клавишу F5, которое создает проект, а затем откройте его в другом экземпляре Visual Studio в режиме отладки (также известном как экспериментальном построении Visual Studio).

    Примечание

    При построении проекта впервые, Visual Studio может показаться, что запрос на остановку ответить и можно получить сообщение о том, что Visual Studio занято.Просто игнорируются сообщение и не загружен ожидание до открытых Visual Studio и пакета.

  8. В экспериментальном построении на Сервис меню с именем команда Первая команда отображаться. Команда Обратите внимание, что вначале необходимо для вывода на печать имя Параметры команды страница шаблона.

  9. Нажать Первая команда. Сообщение, которое должно появиться одно выглядит следующим образом.

    Окно сообщения первой команды

Просмотр обработчика команды меню

Сообщение, которое отображается при щелчке Первая команда на Сервис меню поступает из кода в обработчике для команды меню. Этот обработчик в файле FirstPackage.cs или FirstPackage.vb.

Просмотр обработчика пункта меню

  1. IN Обозреватель решенийоткрыть FirstPackage.cs или FirstPackage.vb.

  2. Найдите класс FirstPackage. Класс FirstPackage определяется следующим образом.

    Public NotInheritable Class FirstPackage
        Inherits Package
    
    public sealed class FirstPackage : Package
    

    Обратите внимание, что класс является производным от MPF Пакет класс.

  3. Определите код для обработчика меню, который реализован метод MenuItemCallback. Функция обработчика меню обычный метод обработчика событий Windows Forms.

    Private Sub MenuItemCallback(ByVal sender As Object, ByVal e As EventArgs)
            ' Show a Message Box to prove we were here
            Dim uiShell As IVsUIShell = TryCast(GetService(GetType(SVsUIShell)), IVsUIShell)
            Dim clsid As Guid = Guid.Empty
            Dim result As Integer
            Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(uiShell.ShowMessageBox(0, clsid, "FirstPackage", String.Format(CultureInfo.CurrentCulture, "Inside {0}.MenuItemCallback()", Me.GetType().Name), String.Empty, 0, OLEMSGBUTTON.OLEMSGBUTTON_OK, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST, OLEMSGICON.OLEMSGICON_INFO, 0, result))
        End Sub
    
    private void MenuItemCallback(object sender, EventArgs e)
    {
        IVsUIShell uiShell = (IVsUIShell)GetService(typeof(SVsUIShell));
        Guid clsid = Guid.Empty;
        int result;
    
        Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(
            uiShell.ShowMessageBox(
                0, ref clsid,
                "FirstPackage",
                string.Format(CultureInfo.CurrentCulture, 
                    "Inside {0}.MenuItemCallback()", this.ToString()),
                string.Empty, 0,
                OLEMSGBUTTON.OLEMSGBUTTON_OK,
                OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST,
                OLEMSGICON.OLEMSGICON_INFO,
                0, out result));
    }
    

Добавление сочетания клавиш

По умолчанию команды меню, созданные шаблоном пакета отсутствует сочетание клавиш. Можно добавить в первой команде.

Добавление по умолчанию сочетаний клавиш

  1. IN Обозреватель решенийвыберите команду открыть First.vsct.

    Файл открывается в редакторе XML в Visual Studio.

  2. Найдите конец элемента команд, который отображается </Commands> тег.

  3. Добавьте следующие линии между </Commands> тег и <Symbols> тег.

    <KeyBindings>
      <KeyBinding guid="guidFirstCmdSet" id="cmdidFirstCommand"    editor="guidVSStd97" key1="M" mod1="(control shift)"/>
    </KeyBindings>
    

    Этот элемент KeyBinding имеет несколько атрибутов. guid и id атрибуты определяют, команда осуществляет сочетание клавиш. Guid GUID VSPackage и идентификатор идентификатор команды, введены при запуске шаблона. Оба символа определяются в разделе символов следующим образом.

    <Symbols>
      <GuidSymbol name="guidFirstCmdSet"     value="{600efde8-1f5e-4df5-bc22-06074a411975}">
        <IDSymbol name="cmdidFirstCommand" value="0x0100" />
      </GuidSymbol>
    

    Значение editor атрибут GUID, представляющий контекст, в котором сочетание клавиш будет недоступно. В Visual Studio привязка сочетания клавиш в команде может относится к указанным окна или сделанных глобальный (то есть, доступному в любом месте Visual Studio). Например, в текстовом редакторе, CTRL+I может выполнить команду, но внутри последовательного поиска Обозреватель решенийНажмите CTRL+I не имеет фиксированной привязкой. следовательно, CTRL+I доступно только в текстовом редакторе. В этом пошаговом руководстве сочетание клавиш позволяет быть глобально. Таким образом, значение атрибута редактора guidVSStd97, который значение, которое делает глобальных сочетаний клавиш.

    key1 и mod1 атрибуты, заданные ключ и модификатор, чтобы активировать нужно нажать сочетание клавиш. Для значения key1, все ключи на клавиатуре доступны в символической форме, например, "M", "M" и" VK_F5 для функциональной клавиши F5. Значение mod1 может быть "Alt", "мониторинг" или "сдвигайте", разделяются пробелами в любом сочетании.

    В этом пошаговом руководстве значения key1 M значение (и mod1Control Shift). Таким образом, сочетание клавиш CTRL+SHIFT+M.

  4. В меню Отладка выберите команду Запуск без отладки.

    В экспериментальном построении Visual Studio Сервис меню CTRL+SHIFT+M должно отображаться рядом с Первая команда.

    Первая команда с ярлыком

  5. Сочетание клавиш CTRL+SHIFT+M. Должно появиться одно и то же сообщение, которое появляется при нажатии кнопки Первая команда на Сервис меню.

    Дополнительные сведения о файлах .vsct см. в разделе Справочник по схеме XML VSCT.

Добавление пользовательских сведений в диалоговом окне о программе

Можно включить значок и сведения о пакете в О программе диалоговое окно. Чтобы сделать это, нужно внести следующие изменения в решение.

  • Изменение InstalledProductRegistrationAttribute аргументы для основного класса VSPackage.

  • Реализуйте IVsInstalledProduct интерфейс для основного класса VSPackage.

  • Добавление значка к папке ресурсов.

  • Ссылка на значок в файле VSPackage.resx.

Основной класс VSPackage использует атрибут InstalledProductRegistration, чтобы указать, где можно найти сведения о О программе диалоговое окно. В этом пошаговом руководстве основной класс называется FirstPackage, и он может быть изменен путем открытия FirstPackage.cs или FirstPackage.vb.

Новый шаблон проекта создает следующий атрибут InstalledProductRegistration.

<InstalledProductRegistration(    false, "#110", "#112", "1.0", IconResourceID := 400)>
[InstalledProductRegistration(    false, "#110", "#112", "1.0", IconResourceID = 400)]

Идентификаторы "#110" и "#112" ресурса относятся к ресурсам строки, указанные в файле VSPackage.resx следующим образом:

  • 110 ссылаются на FirstPackage

  • 112 ссылаются на моем сведения о VSPackage

IconResourceID 400 относится к файлу Package.ico в папке ресурсов, определяемая в файле VSPackage.resx следующим образом.

<data name="400" type="System.Resources.ResXFileRef,
  System.Windows.Forms">
  <value>Resources\Package.ico;System.Drawing.Icon, System.Drawing,
    Version=2.0.0.0, Culture=neutral,
    PublicKeyToken=b03f5f7f11d50a3a
  </value>
</data>

Настройка О программе диалоговое окно ", изменяется первый аргумент атрибута в InstalledProductRegistration trueтак, чтобы в VSPackage могла предоставить соответствующие данные через интерфейс IVsInstalledProduct.

Добавление пользовательских сведений в экран-заставке и собирается диалоговое окно

  1. Откройте FirstPackage.cs или FirstPackage.vb найдите атрибут InstalledProductRegistration и измените ее аргументы следующим образом.

    InstalledProductRegistration(True, Nothing, Nothing, Nothing)
    
    [InstalledProductRegistration(true, null, null, null)]
    
  2. Создайте класс, FirstPackage из пакета, так и из IVsInstalledProduct.

    Public NotInheritable Class FirstPackage
        Inherits Package
        Implements IVsInstalledProduct
    
    public sealed class FirstPackage : Package, IVsInstalledProduct
    
  3. Явно реализуйте интерфейс IVsInstalledProduct. Этот шаг, отличается для c# и Visual Basic.

    1. В c# явно реализуйте интерфейс IVsInstalledProduct путем изменения цвета при наведении указателя мыши колебаться IVsInstalledProduct. Если меню IntelliSense отображается, щелкните первый элемент.

      Реализовать интерфейс

      Создание заглушки добавляет следующие методы в класс FirstPackage. В более позднем этапе заполните методы.

      public int IdBmpSplash(out uint pIdBmp)
      {
          throw new NotImplementedException();
      }
      public int IdIcoLogoForAboutbox(out uint pIdIco)
      {
          throw new NotImplementedException();
      }
      public int OfficialName(out string pbstrName)
      {
          throw new NotImplementedException();
      }
      public int ProductDetails(out string pbstrProductDetails)
      {
          throw new NotImplementedException();
      }
      public int ProductID(out string pbstrPID)
      {
          throw new NotImplementedException();
      }
      
    2. В Visual Basic добавьте следующий код к концу класса FirstPackage. В более позднем этапе заполните методы.

      Function ProductDetails( _
          <OutAttribute()> ByRef pbstrProductDetails As String) _
      As Integer
      
      End Function
      
      Public Function IdBmpSplash(ByRef pIdBmp As UInteger) As Integer Implements Microsoft.VisualStudio.Shell.Interop.IVsInstalledProduct.IdBmpSplash
      
      End Function
      
      Public Function IdIcoLogoForAboutbox(ByRef pIdIco As UInteger) As Integer Implements Microsoft.VisualStudio.Shell.Interop.IVsInstalledProduct.IdIcoLogoForAboutbox
      
      End Function
      
      Public Function OfficialName(ByRef pbstrName As String) As Integer Implements Microsoft.VisualStudio.Shell.Interop.IVsInstalledProduct.OfficialName
      
      End Function
      
      Public Function ProductID(ByRef pbstrPID As String) As Integer Implements Microsoft.VisualStudio.Shell.Interop.IVsInstalledProduct.ProductID
      
      End Function
      
  4. Скопируйте Icon.ico из <Путь установки пакета SDK для Visual Studio>\Common7\IDE\NewFileItems и вставьте его в папке ресурсов в решении пакета.

  5. IN Обозреватель решенийщелкните правой кнопкой мыши папку ресурсов, укажите Добавить, а затем нажмите кнопку Существующий элемент. Задание фильтра типов файлов в Все файлы (*.*) затем добавьте Icon.ico.

  6. IN Обозреватель решенийщелкните правой кнопкой мыши и выберите команду VSPackage.resx Открыть с помощью. Выберите Редактор XML и щелкните элемент ОК открыть файл в редакторе XML.

  7. Добавьте следующие линии непосредственно перед выпускными экзаменами </root> тег.

    <data name="500" type="System.Resources.ResXFileRef,   System.Windows.Forms">
      <value>Resources\GenericPackage.ico;    System.Drawing.Icon, System.Drawing, Version=2.0.0.0,    Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
      </value>
    </data>
    

    Эта разметка объявляют Icon.ico в качестве идентификатора ресурса 500.

  8. В FirstPackage.cs или FirstPackage.vb замените реализация интерфейса IVsInstalledProduct с помощью следующего кода.

    Public Function ProductDetails(ByRef pbstrProductDetails As String) As Integer Implements IVsInstalledProduct.ProductDetails
        pbstrProductDetails = "This is my package"
        Return Microsoft.VisualStudio.VSConstants.S_OK
    End Function
    
    Public Function IdBmpSplash(ByRef pIdBmp As UInteger) _
    As Integer Implements IVsInstalledProduct.IdBmpSplash
        Return Microsoft.VisualStudio.VSConstants.S_OK
    End Function
    
    Public Function IdIcoLogoForAboutbox(ByRef pIdIco As UInteger) _
    As Integer Implements IVsInstalledProduct.IdIcoLogoForAboutbox
        pIdIco = 600
        Return Microsoft.VisualStudio.VSConstants.S_OK
    End Function
    
    Public Function OfficialName(ByRef pbstrName As String) _
    As Integer Implements IVsInstalledProduct.OfficialName
        pbstrName = "My Package"
        Return Microsoft.VisualStudio.VSConstants.S_OK
    End Function
    
    Public Function ProductID(ByRef pbstrPID As String) _
    As Integer Implements IVsInstalledProduct.ProductID
        pbstrPID = "My Package ID"
        Return Microsoft.VisualStudio.VSConstants.S_OK
    End Function
    
    public int IdBmpSplash(out uint pIdBmp) 
    { 
        return Microsoft.VisualStudio.VSConstants.S_OK; 
    } 
    public int IdIcoLogoForAboutbox(out uint pIdIco) 
    { 
        pIdIco = 500; 
        return Microsoft.VisualStudio.VSConstants.S_OK; 
    } 
    public int OfficialName(out string pbstrName) 
    { 
        pbstrName = "My Package"; 
        return Microsoft.VisualStudio.VSConstants.S_OK; 
    } 
    public int ProductDetails(out string pbstrProductDetails) 
    { 
        pbstrProductDetails = "This is my package"; 
        return Microsoft.VisualStudio.VSConstants.S_OK; 
    } 
    public int ProductID(out string pbstrPID) 
    { 
        pbstrPID = "My Package ID"; 
        return Microsoft.VisualStudio.VSConstants.S_OK; 
    } 
    

    Второй метод возвращает идентификатор ресурса значка. Оставшиеся 3 функции возвращают имя продукта и сведения, код продукта, так как они отображались в О программе диалоговое окно.

Изменения можно протестировать путем выполнения следующей процедуры.

Тестирование экран-заставка и о настройке диалогового окна

  1. IN Обозреватель решенийщелкните правой кнопкой мыши первый узел проекта, а затем - Свойства. Конструктор приложений.

  2. Нажать Отладка. Появится панель параметры отладки.

  3. в Аргументы командной строки окно добавить /splash switch.

    Сплэш-переключателькомандной строки

  4. Нажмите клавишу F5, чтобы открыть Visual Studio в экспериментальном построении.

  5. На Справка меню выберите команду О Microsoft Visual Studio.

    О программе откроется диалоговое окно, в котором отображается значок и текст для разработки VSPackage.

    Диалоговое окно “Справка о”

Что дальше?

Обозреватель решений и Список задач примеры окна инструментов. IN Пошаговое руководство: Создание окно инструментов (часть 2 из 4)можно создать окно инструментов, закрепления в Visual Studio и позволяющие воспроизводить файлы " музыка ".

См. также

Основные понятия

Примеры расширения Visual Studio

Другие ресурсы

VSPackages

фирменная символика VSPackage

VSPackage Load Keys

Пример Reference.Package

Пример Reference.Package