Просто откройте свой проект 2005 года в 2008 году и дайте ему возможность обновить ваше решение / проекты. Вы можете получить диалоговое окно с просьбой обновить версии CLR, просто скажите нет.
Получив работающее решение 2008 года, скопируйте файл * .sln под другим именем (я называю его копией * .2005.sln), откройте скопированный файл * .sln в блокноте или в своем любимом текстовом редакторе. Найдите «Формат версии 10.0» во 2-й строке и измените на «Формат версии 9.0». Сохраните файл.
Вот и все, ваш обновленный файл решения работает в VS 2008, а тот, который вы скопировали и изменили, работает в VS 2005.
Есть еще один шаг, если у вас есть проекты веб-приложений.
В файле vbproj или csproj веб-приложения найдите строку:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplications.targets" Condition="" />
и замените одну строку этими двумя:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v8.0\WebApplications\Microsoft.WebApplications.targets" Condition="'$(Solutions.VSVersion)' == '8.0'" />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplications.targets" Condition="'$(Solutions.VSVersion)' == '9.0'" />
Эти две строки будут условно выбирать правильный путь MSBuild в зависимости от используемой версии VS.