Как выбрать набор инструментов платформы решений Visual Studio для максимальной совместимости
фон
Я открываю поиск нескольких старых приложений Visual Studio, которые я создал некоторое время назад. Я создал новые решения, используя для них новую среду VS2012, и получил проекты, настроенные как репозитории git. Я получил все, что работает нормально в Visual Studio 2012 без изменений исходного кода, все, что мне нужно было сделать, это убедиться, что я связываю соответствующие библиотеки в новых конфигурациях проекта.
Я хотел бы настроить эти проекты как иметь максимальный для других, загружающих проект из Github. На этой машине у меня VS2010 установлен вместе с последней версией VS2012. После того как я получил все работает правильно для обоих проектов в VS2012, я попытался открыть их в VS2010.
когда я попытался построить, я получил одну ошибку:
Specified platform toolset (v110) is not installed or invalid.
Please make sure that a supported PlatformToolset value is selected.
C:Program Files (x86)MSBuildMicrosoft.Cppv4.0PlatformsWin32Microsoft.Cpp.Win32.Targets 518
Что Я Пробовал
поэтому я открыл свойства для проекта, пошел в Configuration Options --> General
и Набор инструментов действительно был установлен Visual Studio 2012 (v110)
. Этот вход представляет собой раскрывающийся список и v110
значение не указано, вместо этого я получаю два варианта:
- твердотельного накопителя V100, если
- V90 в
они соответствуют VS2010 и VS2008 соответственно. Если я изменю значение на v100 и перестрою, я не получу ошибок, и моя программа отлично работает в моей среде Visual Studio 2010.
когда я открываю проект обратно в Visual Studio 2012, Если говорит мне, что у меня есть старый файл проекта и спрашивает, хочу ли я обновить, я говорю "да", и он обновляется. Я перестраиваюсь и бегу, чтобы убедиться, что все еще работает. Когда я открываю параметры конфигурации в VS2012 Набор Инструментов Платформы устанавливается обратно в " Visual Studio 2012 (v110), но при нажатии раскрывающегося списка есть еще несколько вариантов:
- визуальные студии 2012 (V110 монтаж)
- v110_wp80
- Visual Studio 2012-Windows XP (v110_xp)
- в Visual Studio 2010 с (твердотельного накопителя V100, если)
- Visual Studio 2008 (v90)
- "наследовать от родителей или проекта по умолчанию"
Мои Вопросы
это привело меня к несколько вопросов. Я собираюсь их всех поставить. Было бы неплохо получить как можно больше информации, но хороший ответ только на один из них, вероятно, решит мою проблему.
если я не использую функции, характерные для более новых версий Visual Studio, можно ли настроить решение, которое можно открыть и запустить без изменений в максимально возможном количестве версий (т. е. 2008, 2010 или 2012)? Если да, то как?
если я поставил Набор Инструментов Платформы для v90 (VS2008) из Visual Studio 2012, и он может создавать и запускать, означает ли это, что он будет создавать и запускать для пользователей с VS2012, VS2010 и VS2008?
что именно делать? Что? будет ли проект по умолчанию настроен как? Можно ли использовать это, чтобы сказать Visual Studio попытаться использовать любой установленный Набор Инструментов Платформы будет работать.
есть ли другие варианты, кроме Набор Инструментов Платформы в Visual Studio, который я могу установить для повышения совместимости с другими средами разработки?
1 ответов
Это несколько сложная ситуация. Одна из основных проблем здесь заключается в том, что VS2010 и VS2012 используют MSBuild для создания проектов C++, но VS2008 вместо этого передал его в VCBuild. Это можно увидеть, сравнив файлы проекта. VS2010/VS2012 для использования .vcxproj, в то время как VS2008 использует .файлы vcproj.
Если я не использую функции, специфичные для более новых версий Visual Studio, можно ли создать решение, которое можно открыть и запустить без изменений в as many версии, насколько это возможно (т. е. 2008 2010, , или 2012)? Если да, то как?
для максимальной совместимости вы хотите нацелить наименьший общий знаменатель (т. е. vc90 в этом случае). Обратите внимание, что при обновлении файл решения и файлы проекта обновляются до последней версии, что может нарушить совместимость со старыми версиями Visual Studio.
Если я установил набор инструментов платформы в v90 (VS2008) из Visual Studio 2012, и он способен построить и беги, значит ли это, что ... будет ли сборка и запускаться для пользователей с VS2012, VS2010 и VS2008?
не совсем, из-за.расширением vcxproj / .конфликт vcproj, указанный выше.
например, у меня в настоящее время есть набор .vcxproj файлы и решение, предназначенное для VS2010. Я использую VS2012 как свою IDE, поэтому, когда я открываю решение VS2010 в VS2012, я решаю не обновлять его и просто открывать его как есть. VS2012 и за его пределами должны быть обратно совместимы обратно в VS2010, насколько проект файлы.
для максимальной совместимости в средах разработки моя рекомендация будет использовать решение VS2010 в качестве базовой линии, ориентируясь на v100. Разработчики могут использовать любую версию новее, чем это, и все это должно работать вместе изящно.