- PVSM.RU - https://www.pvsm.ru -

Разработка редактора (расширение на C# для Visual Studio)

День добрый.

В связи с созданием большого расширяемого проекта, возникла необходимость дать разработчикам возможность собирать свои пакеты/модули под проект. (Нечто похожее на редактор Feature и WSP Package для SharePoint) Для этого необходимо создать редактор пакетов/модулей для Visual Studio. Для создания расширения под Visual Studio очень мало информации в интернете, а из официального нашел только это [1]. Решил собрать свою библиотеку (VSExtensibilityHelper), которая бы облегчила пользователю создание VSIX дополнений. В ней собраны базовые классы для создания редакторов:

  • BaseEditorFactory — Базовый класс фабрика
  • BaseWinFormsEditorPane — Базовый класс для редактора на основе WinForms компонента
  • BaseWpfEditorPane — Базовый класс для редактора на основе WPF компонента

Пример реализации:

[Guid("21411E52-A07A-4304-A162-8C87FD7056EA")]
public sealed class WinFormsEditorFactory : BaseEditorFactory<WinFormsEditorEditorPane>
{
}

public class WinFormsEditorEditorPane : BaseWinFormsEditorPane<WinFormsEditorFactory, Controls.WinForms.WinFormUserControl>
{
  #region Methods

        protected override string GetFileExtension()
        {
            return ".win";
        }

        protected override void LoadFile(string fileName)
        {         
        }

        protected override void SaveFile(string fileName)
        {           
        }     

   #endregion Methods
}

Регистрация пакета:

 [ProvideEditorExtension(typeof(Editors.WinFormsEditorFactory), ".win", 50,
      ProjectGuid = "7D346946-3421-48C0-A98A-20790CB68B3C", NameResourceID = 133,
      TemplateDir = @".NullPath")]
public sealed class VSPackageCustomEditors : Package
{
    protected override void Initialize()
    {
        base.Initialize();

            /*
             * Registering editor with WinForms control
             * *.win
             */
            base.RegisterEditorFactory(new Editors.WinFormsEditorFactory()); 
    }
}

В данном примере мы создали свой редактор для Visual Studio который запускается при открытии файлов *.win.

Результат:

image

Результат для WPF

image

Ссылка [2] на исходники и пример.

Спасибо всем!

Автор: Командир судна

Источник [3]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/pesochnitsa/266100

Ссылки в тексте:

[1] только это: https://github.com/Microsoft/VSSDK-Extensibility-Samples

[2] Ссылка: https://github.com/d-kochanzhi/VSExtensibilityHelper

[3] Источник: http://habrahabr.ru/sandbox/111770/