Compatibilidad de versiones
La compatibilidad con versiones anteriores significa que una aplicación desarrollada en una versión determinada de una plataforma se ejecutará en las versiones posteriores de esa plataforma. .NET Framework intenta maximizar la compatibilidad con versiones anteriores: el código fuente escrito para una versión de .NET Framework debe compilarse en versiones posteriores de .NET Framework, y los archivos binarios que se ejecutan en una versión de .NET Framework deberán comportarse del mismo modo en versiones posteriores de .NET Framework.
Compatibilidad de versiones de las aplicaciones
Una aplicación se ejecuta de manera predeterminada en la versión de .NET Framework para la que se creó. Si esa versión no está presente y en el archivo de configuración de la aplicación no se han definido las versiones compatibles, puede producirse un error de inicialización de .NET Framework. En este caso, el intento de ejecutar la aplicación no se realizará correctamente.
Para definir las versiones concretas en las que se ejecuta la aplicación, agregue uno o varios elementos <supportedRuntime> archivo de configuración de la aplicación. Cada elemento <supportedRuntime>
muestra una versión compatible del runtime; el primer elemento especifica la versión de mayor preferencia y el último, la de menor preferencia.
<configuration>
<startup>
<supportedRuntime version="v2.0.50727" />
<supportedRuntime version="v4.0" />
</startup>
</configuration>
Para obtener más información, vea Cómo: Configurar una aplicación para que admita .NET Framework 4 o 4.x.
Compatibilidad de versiones de los componentes
Una aplicación puede controlar la versión de .NET Framework en la que se ejecuta, pero un componente no puede hacerlo. Los componentes y las bibliotecas de clases se cargan en el contexto de una aplicación determinada y, por consiguiente, se ejecutan automáticamente en la versión de .NET Framework de la aplicación.
Debido a esta restricción, las garantías de compatibilidad son especialmente importantes en los componentes. A partir de .NET Framework 4, puede especificar el grado en el que se espera que un componente siga siendo compatible entre diversas versiones aplicando el atributo System.Runtime.Versioning.ComponentGuaranteesAttribute a dicho componente. Las herramientas pueden usar este atributo para detectar posibles infracciones de la garantía de compatibilidad en futuras versiones de un componente.
Compatibilidad con versiones anteriores
.NET Framework 4.5 y versiones posteriores son compatibles con las aplicaciones creadas con versiones anteriores de .NET Framework. Es decir, las aplicaciones y los componentes creados con versiones anteriores funcionarán sin necesidad de modificación en .NET Framework 4.5 y versiones posteriores. Pero, de forma predeterminada, las aplicaciones se ejecutan en la versión de Common Language Runtime para la que se han desarrollado, por lo que puede tener que proporcionar un archivo de configuración para permitir que la aplicación se ejecute en .NET Framework 4.5 o versiones posteriores. Para más información, consulte la sección Compatibilidad de versiones de las aplicaciones, anteriormente en este artículo.
En la práctica, esta compatibilidad puede verse interrumpida por cambios en apariencia intrascendentes realizados en .NET Framework y cambios en las técnicas de programación. Por ejemplo, las mejoras de rendimiento realizadas en .NET Framework 4.5 pueden provocar una condición de carrera que no se daba en versiones anteriores. De igual forma, si se usa una ruta de acceso codificada de forma rígida en los ensamblados .NET Framework, se realiza una comparación de igualdad con una determinada versión de .NET Framework y se obtiene el valor de un campo privado usando la reflexión, no habrá compatibilidad con versiones anteriores. Además, cada una de las versiones de .NET Framework contiene revisiones de errores y cambios relacionados con la seguridad que pueden afectar a la compatibilidad de algunas aplicaciones y componentes.
Use las siguientes listas de comprobación si su aplicación o componente no funciona como esperaba en .NET Framework 4.5 o una versión posterior:
Si la aplicación se ha desarrollado para ejecutarse en cualquier versión de .NET Framework a partir de .NET Framework 4.0, vea Compatibilidad de aplicaciones para generar listas de cambios entre la versión de .NET Framework de destino y la versión en la que se ejecuta la aplicación.
Si tiene una aplicación de .NET Framework 3.5, vea también Problemas de migración de .NET Framework 4.
Si tiene una aplicación de .NET Framework 2.0, vea también Cambios en .NET Framework 3.5 SP1.
Si tiene una aplicación de .NET Framework 1.1, vea también Cambios en .NET Framework 2.0.
Si va a volver a compilar código fuente existente para ejecutarlo en .NET Framework 4.5 o en sus versiones secundarias, o si va a desarrollar una nueva versión de una aplicación o un componente para NET Framework 4.5 o sus versiones secundarias a partir de una base de código fuente existente, consulte Lo obsoleto en la biblioteca de clases .NET Framework para conocer los miembros y tipos obsoletos, y aplique las soluciones indicadas. (El código compilado previamente seguirá ejecutándose con los tipos y miembros que se han marcado como obsoletos).
Si considera que un cambio en .NET Framework 4.5 dañó la aplicación, consulte Esquema de la configuración de Common Language Runtime y, especialmente, el <AppContextSwitchOverrides> Elemento, para determinar si puede usar una configuración en tiempo de ejecución en el archivo de configuración de la aplicación para restaurar el comportamiento anterior.
Si se produce un problema que no está documentado, abra un problema en el sitio de la comunidad de desarrolladores de .NET o en el repositorio de GitHub de Microsoft/dotnet.
Ejecución simultánea
Si no encuentra una solución conveniente para su problema, recuerde que .NET Framework 4.5 (o sus versiones secundarias) se ejecuta en paralelo con las versiones 1.1, 2.0 y 3.5, y es una actualización en contexto que reemplaza la versión 4. En el caso de las aplicaciones dirigidas a las versiones 1.1, 2.0 y 3.5, puede instalar la versión adecuada de .NET Framework en el equipo de destino para ejecutar la aplicación en su entorno más conveniente. Para más información acerca de la ejecución en paralelo, consulte Ejecución en paralelo.