Розширення функціональності Visual Studio, Windows, Операційні системи, статті

Відразу обмовлюся. Все написане тут виключно моє імхо. Я можу помилятися і буду радий, якщо ви мене поправите 🙂

Буду використовувати жаргонізми і варваризми, бо пишу російською, а російських аналогів потрібних термінів немає або вони не зовсім точно передають сенс.

Гаразд, до справи.

Дана стаття має завдання в першому наближенні проінформувати цікавляться про можливості розширення функціоналу Visual Studio– “Технології” Visual Studio Extensibility.


Visual Studio Extensibility


Як відомо, Microsoft Visual Studio – середа для розробки (IDE). Причому розширювана середу.

У зв’язку з тим, що середа непроста, має тривалу історію і дозволяє реалізовувати серйозні речі на своїй основі, з’явився термін Visual Studio Extensibility (VSX), Який об’єднує в собі все, що відноситься до розширення функціоналу студії (буду називати її так).

Студія має вже десятирічну історію. Вона була створена в COM-часи (я знаю, що вони не пройшли) для COM-розробки. Потім змінила своє основне призначення на. NET-розробку. Але залишилася COM-based-додатком, тому основна розширюваність безпосередньо пов’язана з її COM-природою. Для неї, розширюваності, використовується. NET-і COM-інтероперабельність. Це, безсумнівно, привносить в процес розширення захопливість і якийсь шарм (невелика частка сарказму).

Ядро студії від версії до версії залишається в основному тим же, що і у 2002-й версії, а більшість нових можливостей (VS2005, VS2008 і VS2010) реалізовані з використанням мощі VSX.

На жаль, розробнику, який буде працювати з VSX, доведеться зіткнутися з “чарівним кодом”, який розроблявся протягом кількох років різними людьми, і перероблявся безліч разів. А якщо врахувати природу студії і, можливо, стислі терміни її розробки, можна уявити скільки цікавого і дивного розробник може побачити. Все до того ж жаль, іменування сутностей теж трохи кульгає.

І, нарешті, такий аспект, як наявність великої та зрозумілою документації, а точніше її відсутність, народжує незрозуміле і магічне потяг до використання VSX професійними розробниками. Що може бути цікавіше, ніж дослідження вже реалізованих рішень і винахід нових на їх основі?


Навіщо розширювати студію?


Власне, навіщо нам може знадобиться розширення студії? Якщо подумати, то можна виявити безліч рішень, заснованих на VSX, які ми (маю на увазі дотнетчіков) використовуємо в повсякденному житті. WPF, Silverlight та XAML, WCF, LINQ, Tools for Office, Crystal Reports, Workflow Foundation, тестові проекти – розробки від MS, які в попередніх версіях студії були відсутні, але потім з’явилися завдяки прогресу. Далі – власне VSX, який, виходить, заснований на собі самому і включає Integration package, DSL Tools і інші штуки. Відомі ReSharper, AnkhSVN, XMLSpy і GhostDoc. Можливо, менш відомі CodeRush, TestDriven.NET, Smart Paster. Небазових для. NET мови F#, IronPython, IronRuby, PHP. Все це речі в тій чи іншій мірі засновані на VSX.

Відразу варто зауважити: розширення студії доступно у двох варіантах – Isolated Mode і Integrated Mode. Різниця тут у тому, що саме ядро ​​студії та їїAPI доступно завжди, але функціонал, який присутній у звичайній студії буде доступний тільки в інтегрованому режимі (наприклад, сішарп і віжуал-бейсик, веб-проекти, усілякі вікна та інструменти). В ізольованому ми отримаємо виключно оболонку, шелл.

XNA Game Studio, Microsoft Robotics Studio, SQL Server Management Studio, Microsoft Visual Studio Macros – перші, які прийшли в голову продукти, реалізовані на основі ізольованого шелла. Так само, вся лінійка Express-студій: Visual Basic 2008 Express Edition, Visual Web Developer 2008 Express Edition, Visual C + + 2008 Express Edition, Visual C # 2008 Express Edition, – думаю, має ті ж корені.

Нa Хабре, до речі, були публікації про приклади використання VSX:


Тепер, сподіваюся, трохи більш зрозуміло навіщо розширювати студію. Бачиться мені, що VSX корисна штука, особливо враховуючи те, що він і сам розвивається. Нова Visual Studio 2010 повинна бути більш доброзичливою до тих, хто планує зайнятися розширенням. Як мінімум, з причини того, що. NET Framework 4.0 буде включати в себе Managed Extensibility Framework (як нагадав хабраюзер Vladek).

Важливо відзначити, що розширення в інтегрованому режимі доступні тільки в неекспресс-версіях. Т. е. в безкоштовних версіях неможливо встановити жодних розширень. Зате цей інтегрований режим можна використовувати для створення і впровадження нових мов програмування, додаткового інструментарію розробки у вже придбану та встановлену студію. Приклади мов і технологій були вище.

Якщо ж ми хочемо обійтися без придбання дорогої копії Visual Studio Standard, Professional або версії Team System, то спеціально для нас є безкоштовний Visual Studio Isolated Shell, який можна використовувати для створення своїх стенделон-продуктів, наприклад специфічних редакторів.


Можливості VSX


Можливості розширення 2008-й версії, Так само як і 2005-й, включали в себе три основні варіанти:


Наскільки я розумію, 2010-я студія і новий SDK поки нічого іншого в цей список не привнесли.

Повернемося до розширень. Макроси та надбудови доступні завжди, але створення пекеджей вимагає наявність Visual Studio SDK.

Для того щоб отримати повну віддачу від VS SDK краще спочатку поставити VS 2008 SDK 1.0, а вже потім VS 2008 SDK 1.1. В 1.1 з якоїсь причини відсутній Project Base, про який буде розказано пізніше.

Загалом, після установки VS SDK з’явиться можливість створювати надбудови і пекеджі, а після установки Visual Studio 2008 Shell (isolated mode) with SP1 – VS Shell-based-рішення. Зазначу, що ізольований шелл існує в десяти локалізаціях.

Виключно трьома варіантами VSX обмежується тільки технічно. А так, є ще й візуалайзери (Visualizers), вікна (Tool Window), проекти (Project Templates), MSBuild-Розширення,DSLTools і вже згаданий VS Shell Isolated.

Тепер по порядку:


MPF


Основою VSX є Managed Package Framework (MPF). Він дозволяє створювати пекеджі з керованим кодом. MPF містить інкапсульовані імплементації безлічі інтерфейсів пекеджей, що дозволяє обходитися меншою кількістю коду для створення власних пекеджей.


MPF-неймспейси


Наступний список неймспейсов стає доступний після встановлення SDK:





























Неймспейс  Опис 
Microsoft.VisualStudio Класи для роботи з COM-помилками, константам студії і він32-вікнами
Microsoft.VisualStudio.Package Обгортки з керованого коду для проектів студії, редакторів коду і MSBuild
Microsoft.VisualStudio.Package.Automation  Обгортки для об’єктів автоматизації
Microsoft.VisualStudio.Shell  Базові класи MPF, що імплементують безліч основних об’єктів студії, від яких можна успадковуватися
Microsoft.VisualStudio.Shell.Design  Розширення дизайнерів
Microsoft.VisualStudio.Shell.Design.Serialization  Розширення сериализации дизайнерів
Microsoft.VisualStudio.Shell.Design.Serialization.CodeDom  CodeDOM-розширення дизайнерів
Microsoft.VisualStudio.Shell.Flavor  Підтримка підтипів проектів

VSXtra


За словами творця цього інструментарію (VSXtra) розробка пекеджей стала набагато легше, ніж була. За допомогою використання безлічі обгорток, інших патернів і іншого він доклав зусиль, щоб приховати COM-природу студії і “шизофренічного стану” розробника, необхідного для роботи з COM через. NET.

Проблеми, які вирішуються VSXtra:


Загалом, він обернув MPF, дореалізовав то необхідне, чого не реалізували, причому обгортка ця досить сучасна й гармонійна.

Головне завдання цього продукту підштовхнути команду розробників студії до створення нового сучасного MPF. Ну, а побічна – допомогти розробникам і розважити свого автора.


Visual Studio 2010 Beta SDK


Visual Studio 2010 Beta SDK містить кілька нових елементів, які спрощують розробку розширень:


Що змінилося:


На бете робота над SDK звичайно ж не закінчена. Далі буде наступне:

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*