Visual Studio 2010 в таскбаре Windows 7

    Недавно вышел новый Eclipse Helios, среди нововведений которого есть поддержка таскбара Windows 7 и дока Mac OS X. В частности, Эклипс может отображать прогресс сборки, наличие ошибок и предупреждений. К хорошему быстро привыкаешь, и мне захотелось иметь нечто подобное в Visual Studio 2010. Подходящего расширения в сети не нашлось, так что пришлось делать его самому.

    Плагинов к VS я раньше никогда не писал, но на сайте Microsoft нашелся и SDK и много информации по нему. Для работы с новым таскбаром в .Net также имеется готовый набор библиотек и примеров: Windows API Code Pack.

    Технические детали


    После создания шаблонного проекта «Visual Studio Add-in» остается только заполнить кодом методы:
    public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
    public void OnDisconnection(ext_DisconnectMode disconnectMode, ref Array custom)
    public void OnStartupComplete(ref Array custom)
    public void OnBeginShutdown(ref Array custom)


    Я использовал первые три:
    • OnConnection — для проверки на поддержку таскбара
    • OnStartupComplete — для инициализации доплнения,
    • OnDisconnection — для корректного завершения работы.

    Проверка на поддержку таскбара выглядит так:
    if (!TaskbarManager.IsPlatformSupported)
    {
    MessageBox.Show("Win7taskbar plugin requires to be run on Windows 7", "Plugin needs Windows 7", MessageBoxButtons.OK, MessageBoxIcon.Error);
    return;
    }


    Интерфейсы _applicationObject.Events.BuildEvents, _applicationObject.Events.DebuggerEvents, _applicationObject.Events.SolutionEvents предоставляют набор событий, позволяющих узнать о начале/окончании сборки, переходе в режим отладки и открытии/закрытии солюшена.
    Получить список ошибок и предупреждений студии можно через _applicationObject.ToolWindows.TaskList

    Как работать с таскбаром, я узнал из замечательного руководства тут. Остальное было делом техники.

    Что получилось


    Теперь, при сборке я вижу индикатор прогресса (к сожалению, процент выполнения студия не сообщает):

    Если на момент окончания сборки есть предупреждения или ошибки, в таскбаре появляется одна из иконок:


    Кроме того, так как я часто открываю по три-четыре экземпляра студии, решил добавить также ThumbnailToolbar для действий «Build Solution», «Debug» и «Run»:


    Заключение


    Получившийся результат я упаковал в msi и выложил в Visual Studio Gallery, его же и просто файлы в zip-архиве, на всякий случай выложил на narod.ru.
    У меня работает, надеюсь, у вас тоже! ;)
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 39
    • 0
      Скажите, а с 2008 студией заработает?
      • 0
        За не имением оной, не смог проверить. :( Самому интересно! Теоретически, должно работать, но при наличии 4го фреймвока.
        • НЛО прилетело и опубликовало эту надпись здесь
          • +2
            Проблема в том, что в плагине прописана конкретная версия студии.
            DLL-ки я скачал, XML подправил, теперь ищу, как подключить их к среде.
            • НЛО прилетело и опубликовало эту надпись здесь
              • 0
                А вы сами подумайте: не у всех на работе есть инет в «стопицот» мегабит и права администратора, и время на эксперименты.
                • НЛО прилетело и опубликовало эту надпись здесь
                  • 0
                    Права админа — это да. А вот возможно лицензионные проблемы. Мне, например, приходится иногда работать по Remote Desktop на сервере заказчика. Там исключительно VS2010 Express Edition.
                    • НЛО прилетело и опубликовало эту надпись здесь
                      • 0
                        вы термин freeware или open source слыхали?
                        автор сделал то, что требовалось ему.
                        вам хочется 2008 студию? значит она у вас есть? -> потраттьте 5 минут и проверьте сами и вам не то что минусы ставить не будут — заплюсуют!
                        • НЛО прилетело и опубликовало эту надпись здесь
                  • 0
                    По большому счету в рабочее время нужно не на хабре сидеть, а работать )
              • 0
                нет
              • +4
                Замечательный плагин :)

                Насчет прогресса… а можно ли сделать, чтобы показывало в качестве прогресса количество собранных проектов?

                Например, в solution 10 проектов, если уже собрано 3, то прогресс 30%.

                Было бы очень удобно :)
                • 0
                  Я не нашел способа узнать, сколько проектов из солюшена будет собираться реально (далеко не всегда будут все), а без этого прогресс не сделать. Если разберусь, подумаю над вашим предложением.
                  • 0
                    Ну, можно учитывать и те проекты, которые скипаются. К примеру, если я не ошибаюсь, система распределённой сборки IncrediBuild делает так (там тоже в графическом режиме отображается процесс сборки).
                • +2
                  Забавная иконка получается, когда VS запущена с правами админа и 2 значка накладываются.


                  • +1
                    Да, интересный косяк :)
                  • 0
                    Спасибо большое за полезный плагин к Visual Studio.

                    Только исправьте, пожалуйста, таксбар на таскбар в заголовке и тексте… Я долго не мог понять что такое таксбар, думал, что я не так читаю из-за того, что целую ночь не спал…
                  • 0
                    Интересно… Так как у меня нет 2010 студии, то пойду сейчас писать под 2008.
                    • 0
                      Ждем. Обязательно пришлите ссылку.
                    • 0
                      vs2010 Ultimate, ThumbnailToolbar заработал, иконка анимируется при построении, но при наличии ошибок или предупреждений — ничего не выдает
                      • 0
                        Учитываются только ошибки категории BuildCompile. И еще может быть косяк с тем, что ошибки появились в списке уже после сборки (я проверяю только в момент окончания), например те, которые студия ставит на основе анализа кода. Пока даже не знаю, как на них реагировать.
                        • 0
                          Error 1 The name 'db' does not exist in the current context E:\projects\other\ConsoleApplication1\ConsoleApplication1\Program.cs 31 18 ConsoleApplication1

                          не оно?
                          • 0
                            Да, это должна быть BuildCompile Task. К сожалению, не могу воспроизвести.
                            • 0
                              несуществующий объект, например:
                              class Program
                              {
                              static void Main( string[] args )
                              {
                              abrakadabra.ToString();
                              }
                              }
                              Самая что нинаесть, но в таскбаре иконка не появляется(
                              • 0
                                Именно так и пробовал. Не получилось воспроизвести, у меня иконка появляется. :(
                          • +1
                            Это в смысле ошибки IntelliSence? Лучше никак не реагировать… у нас в коде таких «ошибок» студия находит просто бешенное количество, хотя там все ок… она просто «не разобралась»
                        • +4
                          Конгениально :)

                          Кстати, поставьте статью в конкурс по VS2010, я бы вам приз отдал :)
                          • 0
                            Я бы тоже от приза не отказался. :) Жаль, по условиям конкурса не подхожу.
                          • 0
                            Отличный пример того, насколько новая оболочка VS расширяема! Кстати всё тоже самое можно было бы сделать и без Windows API Code Pack, .NET 4 поддерживает все фишки таскбара. А в конкурсе примите участие, на русской Visual Studio это тоже должно работать :)
                            • 0
                              Скорее просто VS (API, действительно, очень богат): я не использовал ничего, из того что появилось позже 8й студии.
                              • 0
                                А как же .NET 4?
                                • 0
                                  Никаких специфичных зависимостей от .net4 нет, так что, думаю, и под 3.5 должно работать. И кроме того, вполне можно будет поставить VS 2008 + .net4. Проверил бы сам, да не имею возможности.
                                  • 0
                                    К сожалению, в плагине прописана именно VS2010, поэтому просто так на 2008 не встанет.
                                    Попытался я руками создать для 2008 плагин, но я этим ни когда не занимался, а SDK отказался ставиться сославшись на неправильную версию студии (и чем ему professional edition не понравилась?).
                                    Вообще, я думал, что работа с TaskbarBar появилась в .NET 4, но похоже, что 3.5 вполне хватит (в руководстве, согласно которому Вы делали использовалась именно 2008 студия).
                              • 0
                                А тэг для конкурса, таки, поставил. Уговорили! :)
                              • НЛО прилетело и опубликовало эту надпись здесь
                                • 0
                                  спасибо, отличное расширение

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