Jak otworzyć stary projekt MVC w programie Visual Studio 2012 lub Visual Studio 2013?

152

Mam stary projekt ASP.NET MVC 2, którego nie chcę aktualizować do MVC 3 lub MVC 4. Pracuję na nowej maszynie z systemem Windows 8, Visual Studio 2012 i Visual Studio 2013. Kiedy próbuję otworzyć MVC 2 w VS 2012 lub VS 2013 Otrzymuję błąd:

Ten projekt jest niezgodny z bieżącą wersją programu Visual Studio

Projekt jest następnie zwalniany i wyszarzany w Eksploratorze rozwiązań. Nie chcę instalować kolejnej kopii programu Visual Studio. Jak mogę otworzyć stary projekt MVC w nowej wersji programu Visual Studio?

ahsteele
źródło
Dlaczego zadałeś to pytanie, skoro wiedziałeś?
Brian White
30
@BrianWhite Kiedy rano napotkałem ten problem, szybko przeszukałem Google i nic nie znalazłem. Ponieważ znam sposób działania plików projektów VS, zgadłem, jaka jest przyczyna i możliwe rozwiązanie. Po sprawdzeniu, że rozwiązanie działa, chciałem się tą wiedzą podzielić. Zgodnie z wytycznymi Jeffa możesz zadawać własne pytania i odpowiadać na nie .
ahsteele
1
Dzięki, nie wiedziałem tego. Jest wiele rzeczy, których nie opublikowałem, ponieważ nie widziałem tutaj nikogo, kto by ich szukał.
Brian White
8
ahsteele, dzięki za wysłanie rozwiązania. Odpowiadanie na własne pytania, gdy zostanie znalezione rozwiązanie, wzbogaca społeczność o wiedzę.
pomarc

Odpowiedzi:

291

Otwarcie nieobsługiwanego projektu MVC w programie Visual Studio 2012 lub Visual Studio 2013 jest w rzeczywistości dość łatwe do wykonania w dwóch krokach. W rzeczywistości, jak wskazuje komentarz bytebender , te same kroki powinny mieć zastosowanie do projektów MVC 1 i działać z nimi. Jednak nie testowałem ich i dlatego nie mogę zagwarantować, że faktycznie działają.

Zakładając, że jeszcze tego nie zrobiłeś, pierwszym krokiem jest pobranie i zainstalowanie MVC 1 , MVC 2 lub MVC 3 (zamknij program Visual Studio przed rozpoczęciem instalacji).

Po zainstalowaniu odpowiedniego smaku MVC projekt nadal nie będzie ładowany w VS 2012. Dzieje się tak, ponieważ projekty ASP.NET MVC są podtypem projektu typu projektu aplikacji sieci Web. Oznacza to, że projekt ma dodatkowe dodatki i funkcje dostępne w przypadku używania w programie Visual Studio.

Zarówno Visual Studio 2012, jak i Visual Studio 2013 mają ograniczoną zgodność wsteczną z ASP.NET MVC i innymi typami projektów. Niestety instalacja starych bitów MVC tego nie zmieniła. Program Visual Studio 2012 jest zgodny z odmianami projektów ASP.NET MVC 3 i 4. Program Visual Studio 2013 jest zgodny z MVC 4 i MVC 5.

Aby załadować projekt, będziesz musiał zmodyfikować plik projektu. Aby to zrobić, kliknij prawym przyciskiem myszy rozładowany projekt i wybierz Edytuj. Który otworzy plik projektu jako plik tekstowy XML. Znajdź ProjectTypeGuidswęzeł, który powinien wyglądać mniej więcej tak:

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

Usuń odpowiedniego przewodnika projektu z listy:

  • ASP.NET MVC 1: {603c0e0b-db56-11dc-be95-000d561079b0}
  • ASP.NET MVC 2: {F85E285D-A4E0-4152-9332-AB1D724D3325} (pokazany w powyższym przykładzie)
  • ASP.NET MVC 3: {E53F8FEA-EAE0-44A6-8774-FFD645390401}
  • ASP.NET MVC 4: {E3E379DF-F4C6-4180-9B81-6769533ABE47}

Po usunięciu odpowiedniego identyfikatora GUID ProjectTypeGuidspowinno wyglądać podobnie do tego:

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

Zapisz plik i zamknij edytor plików projektu programu Visual Studio. Kliknij projekt prawym przyciskiem myszy i wybierz opcję Wczytaj ponownie. Jeśli projekt nie zostanie ponownie załadowany, zamknij i ponownie otwórz program Visual Studio. Teraz powinieneś móc pracować ze starym projektem ASP.NET MVC w nowej wersji programu Visual Studio.

Należy zauważyć, że po tych modyfikacjach program Visual Studio nie wie, że jest to projekt ASP.NET MVC; dlatego funkcje specyficzne dla projektu, takie jak „Dodaj kontroler, widok itp.” nie będzie obecny w menu.

ahsteele
źródło
11
Działa to również w przypadku MVC 1. Nie udało mi się załadować ponownie po edycji pliku projektu. Musiałem zamknąć i ponownie otworzyć Visual Studio, a wtedy udało mi się załadować projekt MVC 1. Dzięki! +1
bytebender
1
doskonały! działa dla mnie z jednym małym dodatkiem ... w moim .cspproj miałem dodatkowy projectTypeGuid: {F85E285D-A4E0-4152-9332-AB1D724D3325}; które należało usunąć.
Kevin Wygrał
2
@JookyDFW problem z narzędziem migracji polega na tym, że jest to narzędzie do migracji . Z powodów nie wymienionych w pytaniu dla tego konkretnego projektu nie mogłem zaktualizować MVC 2. Mimo że projekt nie mógł zostać zaktualizowany, nadal musiałem nad nim popracować. Modyfikacja pliku projektu zgodnie z opisem jest najlepszym (jedynym?) Sposobem pracy z projektem MVC 2 w VS 2012.
ahsteele
3
@RyanShripat to wcale nie było moje doświadczenie. Starsze wersje ASP.NET MVC muszą być zainstalowane, ale VS 2010 nie ma wpływu na powyższe.
ahsteele
2
@Nanu dziękuję za komentarz, żeby było jasne, że to właśnie miałem na myśli mówiąc: „ Jedną ważną rzeczą, na którą należy zwrócić uwagę, jest to, że po tych modyfikacjach program Visual Studio nie jest świadomy tego, że jest to projekt ASP.NET MVC, dlatego funkcje specyficzne dla projektu takie jak „Dodaj kontroler, przeglądaj itp.” nie pojawią się w menu.
ahsteele
4

Użyłem podejścia @ ahsteele (dzięki i 2x + 1s!), Ale miałem jeszcze jeden błąd: -

.csproj: błąd: nie można ukończyć operacji. Nieprawidłowy ciąg klasy

Nie mogę znaleźć żadnych cytatów z prawdziwej przyczyny, ale udało mi się sprawić, że VS2012RTM pomyślnie załaduje projekt, zmieniając plik <ProjectGuid>. (Nie mam pojęcia jak to się stało - jego częścią dużej roztworu i VS08, VS10, VS11 Beta i VS2012RC wszyscy zmodernizowane .csproji .slnupływem czasu.

Ruben Bartelink
źródło
1

W VS2017 rozwiązaniem jest po prostu zrobić to <ProjectTypeGuids></ProjectTypeGuids>tak.

Żadnych przestrzeni między damami i panami, w przeciwnym razie zmarnuje 48 godzin twojego czasu.

pozdrowienia

WickStargazer
źródło