none
VS2010 - Чем является ReSharper (Addin / Plugin / Использует недокументированные возможности) и как написать аналогичный (по принципу внедрения)? RRS feed

  • Вопрос

  • Всем привет!

    В своё время писал Add-in для Visual Studio. Написать написал, но был он глючный - запускался только с ключами VS, требовал установки SDK и вообще вёл себя как кривая подерлка быдлокодера, хотя всё было сделано на основе существующих примеров и в процессе работы никаких проблем не возникало.

    А тут как-то раз начал глючить ReSharper и решил я его временно отключить. И первым делом полез в меню Add-ins... А его там нет. Тут же в запросах гугла вылезло слово Plugin. И вот возник вопрос - чем же всё-таки является ReSharper для Visual Studio? Как внедряет в неё свои компоненты? И главное конечно же - как написать аналогичный компонент. Хочется верить, что это новая ступень в интеграции и с ней не будет таких же проблем, как с Add-in'ами.

    Если кому-нибудь что-нибудь известно - подскажите, пожалуйста. Линки на литературу и msdn приветствуются.

    18 апреля 2013 г. 9:35

Ответы

Все ответы

  • Насколько я знаю - это Add-Ins. Например рекомендую книгу: "Professional Visual Studio 2012", глава 52. По MSDN вот. В книге достаточно хорошо всё объясняется. Объекты среды доступны через пространство EnvDTE. Основная сложность заключается во взаимодействии с COM объектами, обёрткой вокруг которых и является последнее пространство имён (объекты среды представлены как таковые). Сам я в настоящее время пишу дополнение для отладки (в свободное время), если что получится выложу в CodePlex.
    18 апреля 2013 г. 10:03
    Модератор
  • Насколько я знаю - это Add-Ins. Например рекомендую книгу: "Professional Visual Studio 2012", глава 52. По MSDN вот. В книге достаточно хорошо всё объясняется. Объекты среды доступны через пространство EnvDTE. Основная сложность заключается во взаимодействии с COM объектами, обёрткой вокруг которых и является последнее пространство имён (объекты среды представлены как таковые). Сам я в настоящее время пишу дополнение для отладки (в свободное время), если что получится выложу в CodePlex.

    Есть одно "но": все Add-in'ы отображаются в Add-in's Manager. Вне зависимости от желания разработчиков. Когда-то так было и с Resharper'ом. Теперь это не так. Вот и интересует - каким образом они этого добились. Хочется верить, что есть альтернатива Add-in'ам.

    P.S. А проблема не с Com-объектами. Нарисовать свои обёртки вокруг обёрток вокруг COM'ов - не проблема. :D Проблема в отладке и переносе на пользовательские машины готового модуля. =\

    18 апреля 2013 г. 10:07
  • Ответ нагуглил. :)

    http://msdn.microsoft.com/en-us/library/bb166424.aspx

    Всем спасибо.

    • Помечено в качестве ответа Lunar Whisper 18 апреля 2013 г. 10:21
    18 апреля 2013 г. 10:21
  • "А проблема не с Com-объектами. Нарисовать свои обёртки вокруг обёрток вокруг COM'ов - не проблема." - не нужно, всё это уже сделано. Под взаимодействием я подразумевал весь спектор использования этих объектов (объектов EnvDTE, в первую очередь их использование), т.е. в широком смысле.
    18 апреля 2013 г. 11:01
    Модератор
  • "А проблема не с Com-объектами. Нарисовать свои обёртки вокруг обёрток вокруг COM'ов - не проблема." - не нужно, всё это уже сделано. Под взаимодействием я подразумевал весь спектор использования этих объектов (объектов EnvDTE, в первую очередь их использование), т.е. в широком смысле.

    Ага. Я понял. Просто по работе уже приходилось писать Add-in'ы такого плана. И студийная архитектура хоть и кривенькая, но существенно проще, чем творчество некотрых товарищей с многофункциональными портянками мастер-классов, в каждом из которых по нескольку десятков явно реализованных интерфейсов. А "великолепная" иерархия наследования интерфейсов обеспечивает ещё и множество NotImplementedException. После этого под студию писать почти приятно. :)
    19 апреля 2013 г. 9:12