Как выбрать набор инструментов платформы решений 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. Разработчики могут использовать любую версию новее, чем это, и все это должно работать вместе изящно.