Мы уже перенесли версию разработки нашего продукта Visual Lint на VS2010, и по большей части миграция была простой - или была бы, если бы не было так много ошибок в модели автоматизации Visual Studio 2010 Beta 1 , Опыт был похож на работу, которую мы должны были выполнить для поддержки VS2005 (в отличие от VS2008 было легко), поэтому очевидно, что VS2010 представляет собой серьезное изменение в эволюции Visual Studio.
Поскольку мы используем один и тот же двоичный файл для всех версий Visual Studio, которые мы поддерживаем (что означает, что код считается родным для C ++), разрывные изменения в интерфейсах, как правило, нам хорошо видны. На этот раз области, которые вызвали у нас проблемы:
- Новый формат файла проекта .vcxproj (мы анализируем файлы проекта для чтения свойств проекта, поскольку это более надежно для нескольких версий Visual Studio, чем при использовании VCProjectEngine - модели автоматизации Visual C ++). Следовательно, нам пришлось написать новый синтаксический анализатор для файлов .vcxproj, и, поскольку они потенциально очень сложны, это само по себе было главной задачей.
- Различные ошибки в командной строке / интерфейсах команд (предположительно связанные с новым редактором WPF / интеграцией командной строки). Карлос Кинтеро много писал на эту тему, поэтому, если у вас есть проблемы в этой области, вам будет рекомендовано прочитать его блог.
- Недокументированное изменение в последовательности запуска надстройки в бета-версии 1, которое означало, что интерфейсы окна DTE не работали, пока не произошло событие OnStartupComplete. MS сообщила нам, что они отменяют это конкретное изменение в бета-версии 2 из-за потенциальных проблем с совместимостью, но мы в любом случае десенсибилизировали наш код к этому.
- Окна инструментов в бета-версии 1 не могут быть созданы внутренним CLSID (хотя ProgID работает нормально). Это последний, который мы ожидаем, прежде чем мы сможем завершить последний основной бит порта.
Я подозреваю, что наш опыт будет довольно представительным для большинства надстроек - только если вы используете области, на которые непосредственно влияют серьезные изменения в самой Visual Studio (например, интеграция с редактором или intellisense), эффекты, вероятно, будут особенно тяжелый.
Наконец, мы не планируем переносить саму сборку на VS2010; в настоящее время он встроен в VS2008, и мы просто не видим причин для перехода на IDE, которая демонстрирует все признаки того, что все еще находится в стадии разработки, даже если это RTM позднее в этом году (это только мое личное мнение, хотя - YMMV).