Como faço para abrir um projeto MVC antigo no Visual Studio 2012 ou Visual Studio 2013?

152

Eu tenho um projeto antigo do ASP.NET MVC 2 que não quero atualizar para o MVC 3 ou MVC 4. Estou trabalhando em uma nova máquina executando o Windows 8, o Visual Studio 2012 e o Visual Studio 2013. Quando tento abrir o MVC 2 projeto no VS 2012 ou VS 2013, recebo o erro:

Este projeto é incompatível com a edição atual do Visual Studio

O projeto é descarregado e acinzentado no Solution Explorer. Não quero instalar outra cópia do Visual Studio. Como posso abrir um projeto MVC antigo em uma nova versão do Visual Studio?

ahsteele
fonte
Por que você fez essa pergunta se sabia?
Brian White
30
@BrianWhite Quando me deparei com esse problema hoje de manhã, fiz uma pesquisa rápida no Google e não criei nada. Como eu estou familiarizado com o funcionamento dos arquivos de projeto do VS, eu adivinhei a causa e uma solução em potencial. Depois de verificar que a solução funcionou, eu queria compartilhar esse conhecimento. Com base nas diretrizes de Jeff, não há problema em fazer e responder suas próprias perguntas .
ahsteele
1
Obrigado, eu não sabia disso. Há várias coisas que não publiquei porque não vi ninguém procurando por ela aqui.
Brian White
8
ahsteele, obrigado por postar a solução. Responder às próprias perguntas, quando uma solução é encontrada, agrega conhecimento à comunidade.
pomarc

Respostas:

291

Abrir um projeto MVC não suportado no Visual Studio 2012 ou Visual Studio 2013 é realmente muito fácil de realizar com duas etapas. De fato, como o comentário do bytebender indica , essas mesmas etapas devem ser aplicadas e trabalhar para projetos MVC 1. No entanto, eu não os testei e, portanto, não posso garantir que eles realmente funcionem.

Supondo que você ainda não o tenha feito, a primeira etapa é baixar e instalar o MVC 1 , MVC 2 ou MVC 3 (feche o Visual Studio antes de iniciar a instalação).

Após a instalação do MVC, o projeto ainda não será carregado no VS 2012. Isso ocorre porque os projetos do ASP.NET MVC são um subtipo de projeto do tipo de aplicativo de Web Application. Isso significa que o projeto possui suplementos e recursos adicionais disponíveis quando usado no Visual Studio.

O Visual Studio 2012 e o Visual Studio 2013 são limitados em sua compatibilidade com o ASP.NET MVC e outros tipos de projetos. Infelizmente, a instalação dos bits antigos do MVC não mudou isso. O Visual Studio 2012 é compatível com os tipos de projeto do ASP.NET MVC 3 e 4. O Visual Studio 2013 é compatível com MVC 4 e MVC 5.

Para carregar o projeto, você precisará modificar o arquivo do projeto. Para fazer isso, clique com o botão direito do mouse no projeto descarregado e selecione Editar. O que abrirá o arquivo do projeto como um arquivo de texto XML. Encontre o ProjectTypeGuidsnó que deve ser algo como isto:

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

Remova o Guia do Projeto apropriado da lista:

  • ASP.NET MVC 1: {603c0e0b-db56-11dc-be95-000d561079b0}
  • ASP.NET MVC 2: {F85E285D-A4E0-4152-9332-AB1D724D3325} (mostrado no exemplo acima)
  • ASP.NET MVC 3: {E53F8FEA-EAE0-44A6-8774-FFD645390401}
  • ASP.NET MVC 4: {E3E379DF-F4C6-4180-9B81-6769533ABE47}

Com o GUID apropriado removido, ProjectTypeGuidsdeve ser semelhante a este:

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

Salve o arquivo e feche o editor de arquivo de projeto do Visual Studio. Clique com o botão direito do mouse no projeto e selecione recarregar. Se o projeto não recarregar, feche e reabra o Visual Studio. Agora você deve poder trabalhar com seu projeto antigo do ASP.NET MVC em sua nova versão do Visual Studio.

Uma coisa importante a ser observada é que, após essas modificações, o Visual Studio não está ciente de que este é um projeto do ASP.NET MVC; portanto, os recursos específicos do projeto, como "Adicionar controlador, exibir etc." não estará presente nos menus.

ahsteele
fonte
11
Isso funciona para o MVC 1 também. Não consegui recarregar depois de editar o arquivo do projeto. Eu tive que fechar e reabrir o visual studio e, em seguida, ele foi capaz de carregar o projeto MVC 1. Obrigado! 1
bytebender 3/12/12
1
excelente! funciona para mim com uma pequena adição ... no meu arquivo .cspproj, eu tinha um projectTypeGuid extra: {F85E285D-A4E0-4152-9332-AB1D724D3325}; que precisava ser removido.
21713 Kevin Kevin Ganhou
2
@JookyDFW o problema com o utilitário de migração é que ele é um utilitário de migração . Por razões não enumeradas na pergunta para este projeto em particular, não pude atualizar do MVC 2. Mesmo que o projeto não pudesse ser atualizado, eu ainda precisava trabalhar nele. Modificando o arquivo de projeto, conforme descrito é o melhor (único?) Maneira de trabalhar com um projeto MVC 2 em VS 2012.
ahsteele
3
@RyanShripat que não era minha experiência. As versões mais antigas do ASP.NET MVC devem estar instaladas, mas o VS 2010 não afeta o acima.
21913 Ahsteele
2
@ Nanu, obrigado pelo comentário, para deixar claro que é isso que eu quis dizer com: " Uma coisa importante a ser observada é que, após essas modificações, o Visual Studio não está ciente de que este é um projeto do ASP.NET MVC; portanto, os recursos específicos do projeto como "Adicionar controlador, exibir etc." não estará presente nos menus. "
ahsteele 13/14
4

Eu usei a abordagem do @ ahsteele (obrigado e 2x + 1s!), Mas estava tendo mais um erro: -

.csproj: error: A operação não pôde ser concluída. String de classe inválida

Não consigo encontrar nenhuma citação para a causa real disso, mas consegui fazer com que o VS2012RTM carregasse o projeto com êxito, alterando o <ProjectGuid>. (Sem idéia de como isso aconteceu - a sua parte de uma grande solução e VS08, VS10, VS11 Beta e VS2012RC ter tudo atualizado a .csproje .slnao longo do tempo.

Ruben Bartelink
fonte
1

No VS2017, a solução é apenas fazê-lo <ProjectTypeGuids></ProjectTypeGuids>assim.

Não há espaços entre senhoras e senhores, caso contrário, perderá 48 horas do seu tempo.

Saudações

WickStargazer
fonte