Совместное использование С++-решения между Visual Studio 2010 и 11
Me и мой партнер совместно используют С++-решение через subversion.
Он использует Visual Studio 11, и я использую Visual Studio 2010.
После первого запуска и обновления я получил следующую ошибку:
Error 31 error MSB8008: Specified platform toolset (v110) is not installed or invalid. Please make sure that a supported PlatformToolset value is selected.
также в файлах заголовков я получаю следующую ошибку на #include <stdio.h>
:
error: cannot open source file "stdio.h"
Я предполагаю, что это проблема совместимости. Как мы можем это решить?
Ответы
Ответ 1
В Visual Studio 11 есть опция свойства, которая позволяет вам указать набор инструментов платформы.
Platform Toolset v110 используется по умолчанию, если вы создаете новый проект, начиная с Visual Studio 11, но если его можно изменить на v100, который используется Visual Studio 2010.
![Toolset option]()
Ответ 2
Файлы .sln и .vcxproj, сохраненные в Visual Studio 11, не поддерживают обратную совместимость с VS2010. Даже если они совместимы, в конечном итоге вы перейдете код, который компилируется в VS11, но не в VS10.
Лучшим (и, вероятно, единственным) способом является согласие на использование точно такой же среды разработки.
Ответ 3
Немного поздно в обсуждении, но поскольку вы используете исходный элемент управления, вы можете удалить файлы проекта и решения из репозитория и просто поделиться исходным кодом. Очевидно, что если вы добавите новые модули и такие в проект, вам придется вручную добавить их в другое решение, но по крайней мере вам не придется беспокоиться об этой несовместимости. Если вы хотите перейти к нему, приложение может быть создано из командной строки, используя только компилятор и компоновщик, которые, как правило, гораздо более совместимы между версиями. Наконец, вы можете использовать другой инструмент сборки (помимо MSBuild), который остается совместимым в версиях студии.
Если вы решили удалить решение и файлы проекта, нужно рассмотреть вопрос о сохранении копии оригинального YourApp.sln как YourApp.sln.2010. Затем у вас будет возможность выпустить будущие решения, но обновления для проектов и решений будут необходимы для VS 2010, а файл затем скопирован в их версию .2010 и будет сохранен вручную.
Если у SVN есть поддержка патчей или если вы хотите запускать внешнее одеяло (или если вы переключитесь на mercurial, вы можете использовать расширения MQ), вы можете создать файлы исправлений для конвертации с 2010 по 2011 год и удалить обновление патча перед синхронизацией.
Ответ 4
Решение Drake не работало для меня, поскольку свойства для всех проектов в решении уже были правильно установлены на v100. Однако исправление, которое работало, состояло в том, чтобы очистить сборки и удалить все другие файлы, которые не были исходными файлами или файлами проекта. Я думаю, что это, вероятно, удаляло файлы projname.vcxproj.user
, которые исправили его, поскольку, возможно, предпочтение инструментальной привязки было каким-то образом переопределено в настройках пользователя.