Як відкрити старий проект MVC у Visual Studio 2012 або Visual Studio 2013?


152

У мене є старий проект 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?


Чому ви задали це питання, якщо знаєте?
Брайан Вайт

30
@BrianWhite Коли я зіткнувся з цією проблемою сьогодні вранці, я зробив швидкий пошук в Google і нічого не придумав. Оскільки я знайомий з тим, як працюють файли проектів VS, я здогадався про причину та потенційне рішення. Як тільки я перевірив, що рішення спрацювало, я хотів поділитися цим знаннями. Виходячи з настанов Джеффа, нормально задавати і відповідати на власні запитання .
ahsteele

1
Спасибі, я цього не знав. Є кілька речей, які я не публікував, тому що я не бачив, щоб хтось шукав його тут.
Брайан Уайт

8
ахстеле, дякую за публікацію рішення. Відповідаючи на власні запитання, коли знайдеться рішення, додає знання громаді.
pomarc

Відповіді:


291

Відкриття непідтримуваного проекту MVC в Visual Studio 2012 або Visual Studio 2013 насправді досить легко здійснити за допомогою двох етапів. Насправді, як свідчить коментар bytebender , ці самі кроки мають стосуватися та працювати над проектами MVC 1. Однак я не перевіряв їх, тому не можу гарантувати, що вони справді працюють.

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

Після встановлення відповідного аромату MVC проект все ще не завантажиться у VS 2012. Це пов'язано з тим, що проекти ASP.NET MVC є підтипом проекту типу проекту Web Application. Це означає, що проект має додаткові додатки та функції, доступні йому під час використання у 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; тому особливості, характерні для проекту, такі як "Додати контролер, переглянути тощо". не буде присутній у меню.


11
Це працює і для MVC 1. Не вдалося перезавантажити після редагування файлу проекту. Мені довелося закрити і знову відкрити візуальну студію, і тоді вона змогла завантажити проект MVC 1. Дякую! +1
bytebender

1
відмінно! працює для мене з одним невеликим доповненням ... у своєму .cspproj у мене був додатковий проектTypeGuid: {F85E285D-A4E0-4152-9332-AB1D724D3325}; які потрібно було зняти.
Кевін Вон

2
@JookyDFW Проблема з утилітою міграції полягає в тому, що це утиліта міграції . З причин, не зазначених у запитанні до цього конкретного проекту, я не зміг оновити програму MVC 2. Навіть незважаючи на те, що проект не вдалося оновити, мені все одно потрібно було над ним працювати. Зміна файлу проекту як окресленого - найкращий (єдиний?) Спосіб роботи з проектом MVC 2 у VS 2012.
ahsteele

3
@RyanShripat це взагалі не було моїм досвідом. Старіші версії ASP.NET MVC повинні бути встановлені, але VS 2010 не впливає на вищезазначене.
ahsteele

2
@Nanu дякую за коментар, щоб було зрозуміло, що саме я мав на увазі: « Одне важливе, що слід зазначити, це те, що після цих модифікацій Visual Studio не усвідомлює, що це проект ASP.NET MVC; тому особливості проекту на кшталт "Додати контролер, перегляд тощо" не буде присутній у меню. "
ahsteele

4

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

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

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


1

У VS2017 рішення - просто зробити його <ProjectTypeGuids></ProjectTypeGuids>таким.

Між дамами та панами немає проміжків, інакше це витратить 48 годин вашого часу.

З повагою

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.