Недавно вышел новый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.ToolWindows.TaskList
Как работать с таскбаром, я узнал из замечательного руководстватут. Остальное было делом техники.
Что получилось
Теперь, при сборке я вижу индикатор прогресса (к сожалению, процент выполнения студия не сообщает):
Если на момент окончания сборки есть предупреждения или ошибки, в таскбаре появляется одна из иконок:
Кроме того, так как я часто открываю по три-четыре экземпляра студии, решил добавить также ThumbnailToolbar для действий "Build Solution", "Debug" и "Run":