У меня есть проекты, в которых запущена (нужна) visual studio 2015 и целевая платформа 8.1.У меня также есть проекты, которым нужна Visual Studio 2017. Поэтому я недавно установил 2017. Некоторое время это работало нормально для новых проектов на базе 2017 года.
Теперь мне нужно исправить ошибку в 2015-основанные проекты.
То, что я вижу в IDE в Свойства-> Общие-> Целевая Платформа от 10.0.10586.0.Можно увидеть выпадающий список "10.0.17134.0 и 8.1".Выбор 8.1 работает на секунду, но выбор не производится.Он возвращается к 10.0.10586.0.
Без 8.1 целые включаемые файлы windows.h не найдены, компиляция не работает.
Теперь самое интересное - у меня еще есть еще одна (маленькая)проект, который использует 2015. Этот проект перечисляет 8.1 в качестве целевой платформы.И это компилируется.Так что моя общая установка машины должна быть хорошей.
Каким-то образом установка 2017 года, возможно, испортила часть моих проектов 2015 года, но не все.Это выглядит действительно странно, так как .vcproject показывает неизменным в tortoisesvn.
Кто-нибудь знает, как проверить переменные среды и т. Д., Которые используются Visual Studio в отношении SDK?Или Microsoft использует еще одну базу данных для хранения дополнительной информации, связанной с проектом?
РЕДАКТИРОВАТЬ
Вот мое решение: я создал новый проект с нуля.По умолчанию это 8.1 и работает нормально.Затем я открыл старый файл .vcproj и скопировал
<ItemGroup>
<ClCompile Include="myfile1.cpp" />
<ClCompile Include="myfile2.cpp" />
<ClCompile Include="etc.cpp" />
</ItemGroup>
Таким образом, по крайней мере, все мои исходные файлы могут быть восстановлены в новый файл проекта за минуту.Синтаксис xml для ItemGroups чистый.Для всех остальных настроек я использовал IDE.Открыл 2 сеанса Visual Studio и скопировал вручную настройки для библиотек, путей, флагов и т. Д. Теперь все работает снова.Выполнение windiff для обоих файлов .vcxproj не дает четкого ответа.
В новом проекте есть записи, такие как:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
<WholeProgramOptimization>false</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
Я не проверял, чтобы перенастроить это на старый vcxproj, так как у меня заканчивается время, и сейчас у меня есть работающее решение.Я дважды проверил - мой старый vcxproj действительно находился под контролем исходного кода, поэтому он не изменился.Наиболее вероятным кандидатом сейчас является Cuda.
Cuda имеет очень приятные и полезные расширения для визуальной студии.моя последовательность была
сентябрь - visual studio 2015 работает октябрь - добавил cuda 9, работал с cuda.Не трогал проекты с сентября.Скорее всего, проблема произошла здесь, но я не видел, потому что я не строю каждый день / неделю.Позже в октябре я установил Unreal Engine & Visual Studio 2017. Тогда это выглядело хорошо, но я опять не создавал проекты против 2015 года.Так что есть вероятность, что это оказало влияние.
И последнее, но не менее важное: я установил Intel Embree, что не выглядит подозрительно.Это ничего не меняет с визуальной студией.Ребята из Intel Embree не используют компилятор Microsoft.Я просто упоминаю об этом, чтобы определить группу возможных подозреваемых.
Так что, если вы столкнетесь с той же проблемой - создайте решение (проект) с нуля.