Недавно вышел новый Eclipse Helios, среди нововведений которого есть поддержка таскбара Windows 7 и дока Mac OS X. В частности, Эклипс может отображать прогресс сборки, наличие ошибок и предупреждений. К хорошему быстро привыкаешь, и мне захотелось иметь нечто подобное в Visual Studio 2010. Подходящего расширения в сети не нашлось, так что пришлось делать его самому.
Плагинов к VS я раньше никогда не писал, но на сайте Microsoft нашелся и SDK и много информации по нему. Для работы с новым таскбаром в .Net также имеется готовый набор библиотек и примеров: Windows API Code Pack.
После создания шаблонного проекта «Visual Studio Add-in» остается только заполнить кодом методы:
Я использовал первые три:
Проверка на поддержку таскбара выглядит так:
Интерфейсы _applicationObject.Events.BuildEvents, _applicationObject.Events.DebuggerEvents, _applicationObject.Events.SolutionEvents предоставляют набор событий, позволяющих узнать о начале/окончании сборки, переходе в режим отладки и открытии/закрытии солюшена.
Получить список ошибок и предупреждений студии можно через _applicationObject.ToolWindows.TaskList
Как работать с таскбаром, я узнал из замечательного руководства тут. Остальное было делом техники.
Теперь, при сборке я вижу индикатор прогресса (к сожалению, процент выполнения студия не сообщает):
Если на момент окончания сборки есть предупреждения или ошибки, в таскбаре появляется одна из иконок:
Кроме того, так как я часто открываю по три-четыре экземпляра студии, решил добавить также ThumbnailToolbar для действий «Build Solution», «Debug» и «Run»:
Получившийся результат я упаковал в msi и выложил в Visual Studio Gallery, его же и просто файлы в zip-архиве, на всякий случай выложил на narod.ru.
У меня работает, надеюсь, у вас тоже! ;)
Плагинов к 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.
У меня работает, надеюсь, у вас тоже! ;)