Как открыть старый проект MVC в Visual Studio 2012 или Visual Studio 2013?

У меня есть старый проект ASP.NET MVC 2, который я не хочу обновлять до MVC 3 или MVC 4. Я работаю над новым компьютером под управлением Windows 8, Visual Studio 2012 и Visual Studio 2013. Когда я пытаюсь откройте проект MVC 2 в VS 2012 или VS 2013. Я получаю сообщение об ошибке:

Этот проект несовместим с текущей версией Visual Studio

Затем проект разгружается и отображается серым цветом в обозревателе решений. Я не хочу устанавливать другую копию Visual Studio. Как открыть старый проект MVC в новой версии Visual Studio?

Ответ 1

Открытие неподдерживаемого проекта MVC в Visual Studio 2012 или Visual Studio 2013 на самом деле довольно легко выполнить с помощью двух шагов. Фактически, как указывает комментарий bytebenders, эти же шаги должны применяться и работать для проектов MVC 1. Однако я не проверял их и, следовательно, не могу гарантировать, что они действительно работают.

Предполагая, что вы еще не сделали этого, первый шаг - загрузить и установить MVC 1, MVC 2 или MVC 3 (закройте Visual Studio перед началом установки).

Как только у вас будет соответствующий вкус MVC, проект все равно не будет загружаться в VS 2012. Это связано с тем, что проекты ASP.NET MVC являются подтипом проекта типа проекта веб-приложения. Это означает, что у проекта есть дополнительные надстройки и функции, доступные ему при использовании в Visual Studio.

Как Visual Studio 2012, так и Visual Studio 2013 ограничены в своей обратной совместимости с ASP.NET MVC и другими типами проектов. К сожалению, установка старых битов MVC не изменила этого. Visual Studio 2012 совместим с азартными проектами ASP.NET MVC 3 и 4. Visual Studio 2013 совместим с MVC 4 и MVC 5.

Чтобы загрузить проект, вам придется изменить файл проекта. Для этого щелкните правой кнопкой мыши на выгруженном проекте и выберите "Изменить". Что откроет файл проекта как текстовый XML файл. Найдите узел ProjectTypeGuids который должен выглядеть примерно так:

<ProjectTypeGuids>
    {F85E285D-A4E0-4152-9332-AB1D724D3325};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
</ProjectTypeGuids>

Удалите из списка соответствующий указатель проекта:

  • ASP.NET MVC 1: {603c0e0b-db56-11dc-be95-000d561079b0}
  • ASP.NET MVC 2: {F85E285D-A4E0-4152-9332-AB1D724D3325} (показано в примере выше)
  • ASP.NET MVC 3: {E53F8FEA-EAE0-44A6-8774-FFD645390401}
  • ASP.NET MVC 4: {E3E379DF-F4C6-4180-9B81-6769533ABE47}

При удалении соответствующего GUID ProjectTypeGuids должны выглядеть примерно так:

<ProjectTypeGuids>
    {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
</ProjectTypeGuids>

Сохраните файл и закройте редактор файлов проекта Visual Studio. Щелкните правой кнопкой мыши проект и выберите "перезагрузить". Если проект не перезагрузится и снова откроется Visual Studio. Теперь вы должны иметь возможность работать со старым проектом ASP.NET MVC в новой версии Visual Studio.

Важно отметить, что после этих изменений Visual Studio не знает, что это проект ASP.NET MVC; поэтому специфические для проекта функции, такие как "Добавить контроллер, просмотр и т.д.", не будет присутствовать в меню.

Ответ 2

Я использовал подход @ahsteele (спасибо и 2x + 1s!), но имел еще одну ошибку: -

.csproj: ошибка: операция не может быть выполнена. Недопустимая строка класса

Я не могу найти цитаты для реальной причины этого, но мне удалось заставить VS2012RTM успешно загрузить проект, изменив <ProjectGuid>. (Не знаю, как это произошло - его часть большого решения и VS08, VS10, VS11 Beta и VS2012RC со временем обновили .csproj и .sln.

Ответ 3

В VS2017 решение должно просто сделать это как <ProjectTypeGuids></ProjectTypeGuids> так.

Нет промежутков между дамами и джентльменами, иначе это будет тратить 48 часов вашего времени.

Привет