Использование собственного многоплатформенного нацеливания в Visual Studio для сборки старых проектов

Как правило, при установке последней версии Visual Studio рекомендуется обновить проекты. Стоимость обновления проектов и кода часто превышает преимущества новой интегрированной среды разработки, компилятора, библиотек и инструментов. Однако мы знаем, что некоторые проекты обновить не удастся. У вас могут быть двоичные файлы, привязанные к старым библиотекам или платформам, которые по причинам обслуживания невозможно обновить. В коде могут использоваться нестандартные языковые конструкции, которые могут перестать работать при переходе на более новую версию компилятора. Код может полагаться на сторонние библиотеки, скомпилированные для определенной версии Visual C++. Или вы можете создать библиотеки для других пользователей, которые должны быть предназначены для конкретной более старой версии Visual C++.

К счастью, Visual Studio можно использовать для создания проектов, предназначенных для старых наборов инструментов компилятора и библиотек. Если у вас по-прежнему установлены исходные средства, вам не нужно обновлять проект до сих пор до Visual Studio 2010, чтобы воспользоваться новыми функциями в интегрированной среде разработки:

  • Новые возможности рефакторинга кода C++ и экспериментальные функции редактора
  • Новое окно отладчика "Средства диагностики" и окно "Список ошибок"
  • Переработанные точки останова, окно исключений и новые советы для повышения производительности
  • Новые средства навигации и поиска в коде
  • Новые быстрые исправления C++ и расширения Productivity Power Tools

Можно также работать с проектами Visual Studio 2008, но их нельзя использовать без изменений. Дополнительные сведения см. в разделе инструкций по Visual Studio 2008.

Последние версии Visual Studio поддерживают собственное многоплатформенное нацеливание и совместимость проектов. Собственное многоплатформенное нацеливание представляет собой возможность новейшей версии интегрированной среды разработки выполнять сборку с помощью наборов инструментов, установленных предыдущими версиями Visual Studio. Циклическая обработка также является преимуществом последней версии IDE, которое заключается в загрузке проектов, созданных в предыдущей версии, без внесения изменений в проект. Установив последнюю версию Visual Studio параллельно с существующей версией, вы можете использовать новую версию IDE для сборки проектов, обращаясь к компилятору и инструментам из предыдущих версий. Другие участники команды могут продолжать использовать проекты в старой версии Visual Studio.

При работе со старым набором инструментов вам доступны преимущества многих современных функций интегрированной среды разработки, однако это не относится к новым возможностям компилятора C++, библиотеки и средств сборки. Например, вы не сможете использовать новые улучшения соответствия языковым стандартам, новые возможности отладки и анализа кода или более высокую скорость сборки, обеспечиваемую новейшим набором инструментов. Кроме того, некоторые функции интегрированной среды разработки несовместимы с более старыми наборами инструментов. Например, сведения о типе могут быть отсутствуют в профилировщике памяти, а рефакторинг операции Convert в необработанные строковые литералы создает код, соответствующий C++11, который не будет компилироваться при использовании наборов инструментов Visual Studio 2012 или более старых наборов инструментов.

Как использовать собственное многоплатформенное нацеливание в Visual Studio

После установки Visual Studio параллельно с более старой версией откройте существующий проект в новой версии Visual Studio. После загрузки проекта Visual Studio предложит обновить его для использования последней версии компилятора C++ и библиотек. Так как требуется, чтобы в проекте использовались более старые версии компилятора и библиотек, нажмите кнопку Отмена.

Visual Studio будет постоянно выводить запрос на обновление проекта. Чтобы не видеть диалоговое окно обновления при каждой загрузке проекта, можно определить следующее свойство в проектах или в .props импортируемых файлах .targets :

<VCProjectUpgraderObjectName>NoUpgrade</VCProjectUpgraderObjectName>

Если необходимо обновить проекты, это свойство следует удалить.

Если вы решили не выполнять обновление, Visual Studio не внесет никаких изменений в файлы решения или проекта. При сборке проекта созданные двоичные файлы полностью совместимы с созданными с более старой версией Visual Studio, так как Visual Studio использует тот же компилятор C++ и связывает те же библиотеки, с которыми поставляется более старая интегрированная среда разработки. Кроме того, поэтому диалоговое окно обновления предупреждает о том, что при нажатии кнопки "Отмена" вы будете устанавливать старую версию Visual Studio.

Инструкции по Visual Studio 2008

В Visual Studio 2008 существовала собственная выделенная система сборки для C++, которая называлась VCBuild. В Visual Studio 2010 проекты Visual Studio C++ были изменены на использование MSBuild. Независимо от того, выполняется ли обновление безвозвратно или с несколькими целевыми объектами, необходимо выполнить шаг обновления для создания проектов Visual Studio 2008 в последней версии Visual Studio. Обновленный проект по-прежнему создает двоичные файлы, которые полностью совместимы с двоичными файлами, созданными в интегрированной среде разработки Visual Studio 2008.

Сначала в дополнение к текущей версии Visual Studio необходимо установить Visual Studio 2010 на одном компьютере с Visual Studio 2008. Скрипты MSBuild, которые требуются для проектов Visual Studio 2008, может установить только Visual Studio 2010.

Затем нужно обновить решение и проекты Visual Studio 2008 до текущей версии Visual Studio. Перед обновлением рекомендуется создать резервную копию файлов проектов и решений. Чтобы начать процесс обновления, откройте решение в текущей версии Visual Studio. При выводе запроса на обновление просмотрите сведения и нажмите кнопку ОК, чтобы запустить обновление. Если решение имеет несколько проектов, необходимо обновить каждый проект. Мастер создает файлы .vcxproj проекта параллельно с существующими .vcproj файлами. Если у вас также есть копия исходного .sln файла, обновление не влияет на существующие проекты Visual Studio 2008.

Примечание.

Следующие шаги применяются только к сценариям с несколькими целевыми объектами. Если вы планируете окончательно обновить проект до последующего набора инструментов, то следующий шаг — сохранить проект, открыть его в последней версии Visual Studio и устранить проблемы сборки, которые отображаются там.

Если по завершении обновления в журнале ошибок появятся ошибки или предупреждения по проектам, внимательно изучите их. Преобразование из VCBuild в MSBuild может привести к возникновению проблем. Вы должны понимать и уметь применять все элементы действий, приведенные в отчете. Дополнительные сведения о отчете журнала обновления и проблемах, которые могут возникнуть при преобразовании VCBuild в MSBuild, см. в записи блога c++ Native Multi-Targeting.

Когда обновление завершится, и вы исправили все проблемы в файле журнала, решение теперь предназначено для последнего набора инструментов. На завершающем этапе измените свойства для каждого проекта в решение так, чтобы использовался набор инструментов Visual Studio 2008. Загрузите решение в текущей версии Visual Studio. Для каждого проекта в решении откройте диалоговое окно Страницы свойств. Для этого щелкните правой кнопкой мыши проект в обозревателе решений, а затем выберите пункт Свойства. В диалоговом окне Страницы свойств измените значение Конфигурация на Все конфигурации. В разделе Свойства конфигурации выберите Общие, а затем измените Набор инструментов платформы на Visual Studio 2008 (v90).

После этого изменения библиотеки и компилятор Visual Studio 2008 будут использоваться для создания двоичных файлов проекта при сборке решения в текущей версии Visual Studio.

Установка старого набора инструментов Visual Studio

Возможно, у вас есть старый проект Visual Studio C++, который не удается обновить. Чтобы создать его, вам потребуется версия набора инструментов платформы, которая соответствует проекту. Чтобы получить набор инструментов, можно установить бесплатную версию Visual Studio Community или Express. Каждая версия Visual Studio из Visual Studio 2008 может установить компилятор, инструменты и библиотеки, необходимые для этой версии, из текущего выпуска Visual Studio. В Центре загрузки Майкрософт найдите и скачайте конкретную версию Visual Studio. Убедитесь, что во время установки выбраны параметры установки C++. После завершения установки запустите эту версию Visual Studio, чтобы установить обновления. Также проверьте наличие необходимых изменений в Центре обновления Windows. Этот процесс проверки обновлений может потребоваться повторить несколько раз для получения каждого обновления.

Доступные для скачивания версии можно найти на странице скачивания старых версий Visual Studio.

При установке этих продуктов раскрывающееся меню свойств Набор инструментов платформы в диалоговом окне Страницы свойств автоматически обновляется для отображения доступных наборов инструментов. Теперь можно использовать последнюю версию Visual Studio для создания проектов, использующих старую версию набора инструментов: преобразование или обновление не требуется.

См. также

Обновление проектов с более ранних версий Visual C++
Улучшения соответствия C++ в Visual Studio