DXCore — Бесплатная библиотека для создания плагинов в Visual Studio



    В данной статье мы хотим сделать краткий обзор DXCore и рассказать, чем может быть полезна эта .NET библиотека.

    DXCore — это абсолютно бесплатный продукт, который мы развиваем и поддерживаем начиная с 2004 года. В двух словах, DXCore облегчает разработку расширений для Visual Studio.

    Мы стараемся проектировать API этой библиотеки так, чтобы максимально упростить процесс создания плагинов — чтобы разработчики могли сосредоточится на функциональности и по возможности избежать основных сложностей интеграции с Visual Studio.

    DXCore рассчитан на тех, кому чего-то не хватает в Visual Studio и кому нужно расширить свою среду разработки. Можно сказать, что такое желание возникает далеко не у всех, и что в Visual Studio всё уже есть и нечего туда что-то добавлять. И это может быть справедливо.

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

    Для DXCore существует около 50 бесплатных плагинов с открытым исходным кодом. Например, есть замена стандартного диалога Visual Studio для добавления ссылок на сборки. Стандартный диалог несколько медлителен, даже несмотря на то, что в Visual Studio 2010 загрузка доступных сборок производится в отдельном потоке.

    На базе DXCore разработан CodeRushXpress — еще один бесплатный продукт компании DevExpress. CodeRushXpress включает в себя около 50 рефакторингов и функциональность по навигации и созданию деклараций в коде.

    Итак, основные сервисы DXCore:
    • Интеграция с Visual Studio



      В библиотке реализована система расширений (плагинов), построенная по компонентному принципу. Поддерживается несколько базовых типов плагинов: стандартный плагин, плагин для создания ToolWindow, плагин для создания страницы опций.

    • Отображение графической информации в текстовом редакторе



      Реализованы сервисы и система событий для упрощения процесса отображения графической информации в окне текстового редактора Visual Studio. Есть целый ряд готовых графических элементов.

    • Парсинг, преобразование и генерация кода



      Поддерживаются следующие языки: C#, Visual Basic, С++, JavaScript. Также DXCore содержит сервисы для работы с CSS, HTML, XML, XAML.

    • Работа с проектами и файлами



      DXCore предоставляет свой API для работы с проектами и файлами в Visual Studio.

    • Анализ кода



      Есть сервисы для поиска ссылок и деклараций в коде, определения и выведения (type inference) типов данных выражений, загрузки и анализа метаданных .NET сборок.

    Если вы заинтересовались, вот ссылка, где можно скачать библиотеку DXCore.

    В будущих статьях мы бы хотели более детально рассмотреть каждую из данных областей. А что вы хотите увидеть в первую очередь?
    Developer Soft
    75,39
    Компания
    Поделиться публикацией

    Комментарии 12

      +1
      Давно хочу сделать расширение tooltip

      например, надо в таком месте

      <my:Locale runat=«server» RID=«100» />

      при наведении курсора, вывести строковое значение.
      Я знаю что это как-то делается, например возможные ошибки синтаксиса или отсутвия полей студия анализирует и по тултипу показывает ошибку.
      И так хочу, только иметь свой анализ и свой тултип.

      Но примеров никаких не нашёл.
        0
        Можно привести пример текста, который должен показываться в тултипе?
        Мы можем попробовать реализовать такой плагин для примера.
          0
          в моём примере my:Locale
          это веб-контрол Locale который подставит локаль (упрощённый вариант)

          class Locale: System.Web.Control
          {
          public Int32 RID;

          public String Text { get { return /* Some Text */ GetLocaleTextFromSource( RID ); } }

          public override Render( HtmlWriter writer )
          {
          writer.Write( Text );
          }
          }

          я хочу, когда это элемент объявлен на старнице

          <wl:Locale runat=«server» RID=«100» />

          при наведении на RID или на сам контрол, не важно, я видел текст, например взятый из Text, или другим способом, определённый в плагине.

          Это нужно именно в процессе написания кода.

          Как вариант, кнопка переключения на панели (или hot-key)

          <wl:Locale runat=«server» RID=«100» />

          кнопку нажал, увидел «Text From 100»

          нажал обратно, увидел код обратно

          p.s. как опция такой же функционал уже не в html разметке, а в cs-коде

          Locale locale = new Locale();
          locale.RID = 100;
          From.Controls.Add( locale );
            0
            Хорошо, спасибо за поясниние, попробуем что-нибудь придумать :)
          +4
          лично мне бы был интересен какой нить пример плагина, работающий с кодом. Ну там какой нить простенький рефакторинг.
            +2
            Хорошо, в одной из статей эту тему обязательно раскроем
            +1
            А для старушек на delphi ничего халявного нет?
              0
              К сожалению нет.
              0
              А свои типы проектов можно реализовывать с ее помощью?
                0
                К сожалению нет. Для создания своего типа проекта необходимо работать с API студии.
                +2
                При зажатом ctrl и клике на имя класса — открывается файл с описанием этого класса. Может что-то похожее сделать для ресурсов в файлах xml?
                Например:
                Есть такой код в неком xml: Value="$Resources:EstWPTitle;". Зажимаем ctrl и кликаем на EstWPTitle — открывается файл ресурсов и подсвечивается нужная строка.
                  0
                  Да, возможно реализовать такую функциональность, только мы пока не можем точно сказать, когда и в каком виде(статья на Хабре, расширение существующей функциональности Ctrl-Click) она появится. Спасибо за полезную идею.

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                Самое читаемое