¿Cómo abro un antiguo proyecto MVC en Visual Studio 2012 o Visual Studio 2013?

152

Tengo un antiguo proyecto ASP.NET MVC 2 que no quiero actualizar a MVC 3 o MVC 4. Estoy trabajando en una nueva máquina con Windows 8, Visual Studio 2012 y Visual Studio 2013. Cuando intento abrir el MVC 2 proyecto en VS 2012 o VS 2013 recibo el error:

Este proyecto es incompatible con la edición actual de Visual Studio

El proyecto se descarga y se atenúa en el Explorador de soluciones. No quiero instalar otra copia de Visual Studio. ¿Cómo puedo abrir un antiguo proyecto MVC en una nueva versión de Visual Studio?

ahsteele
fuente
¿Por qué hiciste esta pregunta si lo sabías?
Brian White el
30
@BrianWhite Cuando me encontré con este problema esta mañana, hice una búsqueda rápida en Google y no se me ocurrió nada. Como estoy familiarizado con el funcionamiento de los archivos de proyecto VS, tuve una idea de la causa y una posible solución. Una vez que verifiqué que la solución funcionaba, quería compartir ese conocimiento. Según las pautas de Jeff, está bien hacer y responder sus propias preguntas .
ahsteele
1
Gracias, no lo sabía. Hay una serie de cosas que no he publicado porque no vi a nadie buscándolo aquí.
Brian White
8
Ahsteele, gracias por publicar la solución. Responder las propias preguntas, cuando se encuentra una solución, agrega conocimiento a la comunidad.
pomarc

Respuestas:

291

Abrir un proyecto MVC no compatible en Visual Studio 2012 o Visual Studio 2013 en realidad es bastante fácil de lograr con dos pasos. De hecho, como indica el comentario de bytebender , estos mismos pasos deberían aplicarse y funcionar para los proyectos MVC 1. Sin embargo, no los he probado y, por lo tanto, no puedo garantizar que realmente funcionen.

Suponiendo que aún no lo haya hecho, el primer paso es descargar e instalar MVC 1 , MVC 2 o MVC 3 (cierre Visual Studio antes de comenzar la instalación).

Una vez que tenga el sabor apropiado de MVC instalado, el proyecto aún no se cargará en VS 2012. Esto se debe a que los proyectos ASP.NET MVC son un subtipo de proyecto del tipo de proyecto de aplicación web. Esto significa que el proyecto tiene complementos y funciones adicionales disponibles cuando se usa en Visual Studio.

Tanto Visual Studio 2012 como Visual Studio 2013 están limitados en su compatibilidad con ASP.NET MVC y otros tipos de proyectos. Desafortunadamente, la instalación de los viejos bits MVC no cambió eso. Visual Studio 2012 es compatible con los sabores de proyecto ASP.NET MVC 3 y 4. Visual Studio 2013 es compatible con MVC 4 y MVC 5.

Para que el proyecto se cargue, deberá modificar el archivo del proyecto. Para hacerlo, haga clic derecho en el proyecto descargado y seleccione Editar. Lo que abrirá el archivo del proyecto como un archivo de texto XML. Encuentre el ProjectTypeGuidsnodo que debería verse así:

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

Elimine el Project Guid apropiado de la lista:

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

Con el GUID apropiado eliminado, ProjectTypeGuidsdebería verse similar a esto:

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

Guarde el archivo y cierre el editor de archivos del proyecto de Visual Studio. Haga clic derecho en el proyecto y seleccione volver a cargar. Si el proyecto no se recarga, cierre y vuelva a abrir Visual Studio. Ahora debería poder trabajar con su antiguo proyecto ASP.NET MVC en su nueva versión de Visual Studio.

Una cosa importante a tener en cuenta es que después de estas modificaciones, Visual Studio no es consciente de que este es un proyecto ASP.NET MVC; por lo tanto, las características específicas del proyecto como "Agregar controlador, Ver, etc." no estará presente en los menús.

ahsteele
fuente
11
Esto también funciona para MVC 1. No pude volver a cargar después de editar el archivo del proyecto. Tuve que cerrar y volver a abrir Visual Studio y luego pude cargar el proyecto MVC 1. ¡Gracias! +1
bytebender
1
¡excelente! funciona para mí con una pequeña adición ... en mi .cspproj tuve un projectTypeGuid adicional: {F85E285D-A4E0-4152-9332-AB1D724D3325}; que necesitaba ser eliminado.
Kevin ganó el
2
@JookyDFW el problema con la utilidad de migración es que es una utilidad de migración . Por razones no enumeradas en la pregunta para este proyecto en particular, no pude actualizar desde MVC 2. Aunque el proyecto no se pudo actualizar, aún necesitaba trabajar en él. Modificar el archivo del proyecto como se describe es la mejor (¿solo?)
Forma de
3
@RyanShripat esa no fue mi experiencia en absoluto. Deben instalarse las versiones anteriores de ASP.NET MVC, pero VS 2010 no tiene ningún efecto en lo anterior.
ahsteele
2
@Nanu, gracias por el comentario, para que quede claro, eso es lo que quise decir con: " Una cosa importante a tener en cuenta es que después de estas modificaciones, Visual Studio no es consciente de que se trata de un proyecto ASP.NET MVC; por lo tanto, las características específicas del proyecto como "Agregar controlador, Ver, etc." no estará presente en los menús. "
ahsteele
4

Utilicé el enfoque de @ ahsteele (¡gracias y 2x + 1s!), Pero estaba teniendo un error adicional: -

.csproj: error: no se pudo completar la operación. Cadena de clase inválida

No puedo encontrar ninguna cita para la verdadera causa de eso, pero pude hacer que VS2012RTM cargue el proyecto con éxito al cambiar el <ProjectGuid>. (No tengo idea de cómo sucedió esto: es parte de una gran solución y VS08, VS10, VS11 Beta y VS2012RC se han actualizado .csprojy .slncon el tiempo.

Ruben Bartelink
fuente
1

En VS2017, la solución es simplemente hacerlo <ProjectTypeGuids></ProjectTypeGuids>así.

No hay espacios entre damas y caballeros, de lo contrario perderá 48 horas de su tiempo.

Saludos

WickStargazer
fuente