Только что наткнулся на баг в 2010й студии, доставивший мне изрядно неприятных впечатлений.
Надо было мне собрать под 2010й студией один проект, написанный в 2008й, чтобы всё было как у клиента.
Поставил студию на хост, и тут же напоролся на то, что проекты на C++ не преобразуются в новый формат. Выдаёт ошибку
Отчет о преобразовании - :
The following error has occurred during XML parsing: File: <Path>\<Project>.vcproj Line: 34 Column: 5 Error Message: System error: -2146233088. The file '<Path>\<Project>.vcproj' has failed to load.
Что за фигня, думаю. Погуглил, не нашёл ничего хоть отдалённо напоминающего мой случай.
Ладно, думаю, дай проверю на другой платформе: вдруг студия криво встала. Поставил на виртуалке - работает.
Сконвертировал там проекты из 2008 в 2010ю, открыл их обратно на хосте - снова ни в какую. Теперь кажет ошибку:
<Path>\<Project>vcxproj : error : не удается вычислить выражение """.3_SDK". Не найден метод "System.String.3_SDK". C:\Users\<User>\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props
Ну ладно, теперь хоть говорит, где искать. Иду смотреть этот файлик, и обнаруживаю там, что студия в благородном порыве попыталась вытащить из 2008й версии пути "VC++ Directories". В итоге, в этом Microsoft.Cpp.Win32.user.props получилось что-то такое (точное содержимое не сохранил):
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ExecutablePath>$(ExecutablePath)</ExecutablePath>
<IncludePath>$(CUDA_2.3_SDK)\common\inc;$(IncludePath)</IncludePath>
</PropertyGroup>
</Project>
То есть, у меня в 2008й студии был прописан путь к CUDA SDK (пришлось ради сборки одного проекта так сделать). Visual Studio 2010 скопипастила без валидации этот путь, а потом, видимо, пыталась что-то на его основе безуспешно вычислять. А все окружающие спецэффекты были лишь следствием этого.
Словом, будьте бдительны при миграции: иногда от старательности среды всё может поломаться.