Usar compatibilidad nativa con múltiples versiones para compilar proyectos antiguos en Visual Studio

Normalmente se recomienda actualizar los proyectos al instalar la versión más reciente de Visual Studio. El costo de actualización de los proyectos y el código a menudo se ve compensado por las ventajas del IDE nuevo, el compilador, las bibliotecas y las herramientas. Pero se sabe que a veces no se pueden actualizar algunos proyectos. Puede haber archivos binarios que están vinculados a plataformas o bibliotecas más antiguas que por motivos de mantenimiento no se puedan actualizar. El código podría usar construcciones de lenguaje no estándar que se romperían al migrar a un compilador más reciente. El código podría depender de bibliotecas de terceros compiladas para una versión concreta de Visual C++. O bien podría generar bibliotecas para otros usuarios para una versión anterior concreta de Visual C++.

Afortunadamente, puede usar Visual Studio para compilar proyectos para conjuntos de herramientas de compilador y bibliotecas anteriores. Si todavía tiene instaladas las herramientas originales, no tiene que actualizar un proyecto desde visual Studio 2010 para aprovechar las nuevas características del IDE:

  • Nuevas capacidades de refactorización de C++ y características experimentales de editor
  • Nuevas ventanas de herramientas de diagnóstico del depurador y lista de errores
  • Puntos de interrupción renovados, ventana de excepciones y nuevas sugerencias de rendimiento
  • Nuevas herramientas de navegación por el código y búsqueda
  • Nuevas revisiones rápidas de C++ y extensiones de herramientas de productividad avanzadas.

También puede compilar para proyectos de Visual Studio 2008, pero no se pueden usar sin cambios. Para más información, vea la sección instrucciones de la sección Instructions for Visual Studio 2008 (Instrucciones para Visual Studio 2008).

Las versiones más recientes de Visual Studio admiten la compatibilidad nativa con múltiples versiones y los recorridos de ida y vuelta de proyectos. La compatibilidad nativa con múltiples versiones es la capacidad del IDE más reciente de compilar mediante conjuntos de herramientas instalados por versiones anteriores de Visual Studio. El recorrido de ida y vuelta es la capacidad del IDE más reciente de cargar proyectos creados con una versión anterior del IDE sin realizar cambios en el proyecto. Si instala la versión más reciente de Visual Studio en paralelo con la versión existente, puede usar la nueva versión del IDE con el compilador y las herramientas de la versión existente para compilar los proyectos. Otros miembros del equipo pueden seguir usando los proyectos en la versión anterior de Visual Studio.

Al usar un conjunto de herramientas anterior, puede aprovechar muchas de las características más recientes del IDE, pero no los avances más recientes en el compilador de C++, las bibliotecas ni las herramientas de compilación. Por ejemplo, no podrá usar las nuevas mejoras de conformidad de lenguaje, las nuevas características de depuración y análisis de código ni aprovechar el rendimiento de compilación más rápido del conjunto de herramientas más reciente. También hay algunas características del IDE que no son compatibles con conjuntos de herramientas anteriores. Por ejemplo, puede faltar información de tipos en el generador de perfiles de memoria y la operación de refactorización Convertir en literales de cadena sin formato genera código compatible con C ++11 que no se compilará al usar Visual Studio 2012 o conjuntos de herramientas anteriores.

Cómo usar la compatibilidad nativa con múltiples versiones en Visual Studio

Una vez que haya instalado Visual Studio en paralelo con la versión anterior, abra el proyecto existente en la nueva versión de Visual Studio. Cuando se cargue el proyecto, Visual Studio le preguntará si quiere actualizarlo para usar el compilador de C++ y las bibliotecas más recientes. Dado que quiere que el proyecto conserve el compilador y las bibliotecas anteriores, elija el botón Cancelar.

Visual Studio insiste en actualizar el proyecto. Para evitar que aparezca el cuadro de diálogo de actualización cada vez que carga el proyecto, puede definir la siguiente propiedad en los proyectos o en los archivos .props y .targets que importan:

<VCProjectUpgraderObjectName>NoUpgrade</VCProjectUpgraderObjectName>

Debe quitar esta propiedad cuando quiera actualizar los proyectos.

Si decide no actualizar, Visual Studio no realiza ningún cambio en los archivos de solución o proyecto. Al compilar el proyecto, los archivos binarios generados son totalmente compatibles con los que creó con la versión anterior de Visual Studio, ya que Visual Studio usa el mismo compilador de C++ y vincula las mismas bibliotecas con las que se incluye el IDE anterior. Esa es la razón por la que el cuadro de diálogo de actualización le advierte de que mantenga la versión anterior de Visual Studio instalada si elige Cancelar.

Instrucciones para Visual Studio 2008

Visual Studio 2008 tenía su propio sistema de compilación dedicado para C++, denominado VCBuild. En Visual Studio 2010, los proyectos de Visual Studio C++ se cambiaron para usar MSBuild. Tanto si se trata de una actualización permanente como si se trata de un objetivo múltiple, debe seguir un paso de actualización para compilar los proyectos de Visual Studio 2008 en la versión más reciente de Visual Studio. El proyecto actualizado todavía genera archivos binarios que son totalmente compatibles con los creados mediante el IDE de Visual Studio 2008.

En primer lugar, además de la versión actual de Visual Studio, debe instalar Visual Studio 2010 en el mismo equipo que Visual Studio 2008. Solo Visual Studio 2010 instala los scripts de MSBuild necesarios para los proyectos de Visual Studio 2008.

A continuación, debe actualizar los proyectos y la solución de Visual Studio 2008 a la versión actual de Visual Studio. Se recomienda crear una copia de seguridad de los proyectos y los archivos de solución antes de la actualización. Para iniciar el proceso de actualización, abra la solución en la versión actual de Visual Studio. Cuando aparezca el mensaje de actualización, revise la información mostrada y luego elija Aceptar para iniciar la actualización. Si la solución tiene más de un proyecto, debe actualizar cada proyecto. El asistente crea nuevos archivos de proyecto .vcxproj junto a los archivos .vcproj existentes. Siempre que además tenga una copia del archivo .sln original, la actualización no tiene ningún efecto en los proyectos existentes de Visual Studio 2008.

Nota:

Los pasos siguientes solo se aplican a escenarios de varios destinos. Si tiene previsto actualizar permanentemente el proyecto a un conjunto de herramientas posterior, el siguiente paso es guardar el proyecto, abrirlo en la versión más reciente de Visual Studio y solucionar los problemas de compilación que aparecen allí.

Una vez finalizada la actualización, si el informe de registro tiene errores o advertencias sobre cualquiera de los proyectos, examínelos detenidamente. La conversión de VCBuild a MSBuild puede causar problemas. Asegúrese de comprender e implementar los elementos de acción que aparecen en el informe. Para más información sobre el informe de registro de actualización y los problemas que pueden surgir al convertir VCBuild en MSBuild, vea esta entrada de blog C++ Native Multi-Targeting (Compatibilidad nativa con múltiples versiones de C++).

Una vez completada la actualización y corregidos los problemas que aparezcan en el archivo de registro, la solución ahora tiene realmente como destino el conjunto de herramientas más reciente. Como paso final, cambie las propiedades de cada proyecto de la solución para usar el conjunto de herramientas de Visual Studio 2008. Con la solución cargada en la versión actual de Visual Studio, para cada proyecto de la solución, abra el cuadro de diálogo Páginas de propiedades: haga clic con el botón derecho en el proyecto en Explorador de soluciones y luego seleccione Propiedades. En el cuadro de diálogo Páginas de propiedades, cambie el valor de la lista desplegable Configuración a Todas las configuraciones. En Propiedades de configuración, seleccione General y después cambie Conjunto de herramientas de la plataforma a Visual Studio 2008 (v90).

Después de este cambio, se usan el compilador y las bibliotecas de Visual Studio 2008 para generar archivos binarios de proyecto al compilar la solución en la versión actual de Visual Studio.

Instalar un conjunto de herramientas de Visual Studio anterior

Es posible que tenga un proyecto antiguo de Visual Studio C++ que no pueda o no quiera actualizar. Para compilarlo, necesita la versión del conjunto de herramientas de plataforma que coincida con el proyecto. Para obtener el conjunto de herramientas, puede instalar la edición gratuita Visual Studio Community o Express de la versión que necesita. Cada versión de Visual Studio a partir de Visual Studio 2008 puede instalar el compilador, las herramientas y las bibliotecas que necesita para esa versión de Visual Studio actual. Busque en el Centro de descarga de Microsoft y descargue una versión determinada de Visual Studio. Asegúrese de elegir las opciones de instalación de C++ durante la instalación. Una vez completada la instalación, ejecute esa versión de Visual Studio para instalar las actualizaciones. Busque también los cambios de Windows Update que pueda necesitar. Es posible que haya que repetir este proceso de comprobación de actualización más de una vez para obtener todas las actualizaciones.

Para las descargas disponibles actualmente, vea descargar software de Visual Studio anterior.

Cuando se instalan estos productos, el menú desplegable de propiedades Conjunto de herramientas de la plataforma, situado en el cuadro de diálogo Páginas de propiedades, se actualiza automáticamente para mostrar los conjuntos de herramientas que hay disponibles. Ahora puede usar la versión más reciente de Visual Studio para compilar proyectos que usen una versión anterior del conjunto de herramientas: no se requiere ninguna conversión ni actualización.

Consulte también

Actualización de proyectos de C++ desde versiones anteriores de Visual Studio
Mejoras de conformidad de C++ en Visual Studio