Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La compatibilidad con versiones anteriores significa que una aplicación desarrollada para una versión determinada de una plataforma se ejecutará en 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 deben comportarse de forma idéntica en versiones posteriores de .NET Framework.
Compatibilidad de versiones para aplicaciones
De forma predeterminada, una aplicación se ejecuta en la versión de .NET Framework para la que se creó. Si esa versión no está presente y el archivo de configuración de la aplicación no define versiones admitidas, puede producirse un error de inicialización de .NET Framework. En este caso, se producirá un error en el intento de ejecutar la aplicación.
Para definir las versiones específicas en las que se ejecuta la aplicación, agregue uno o varios <elementos supportedRuntime> al archivo de configuración de la aplicación. Cada <supportedRuntime> elemento muestra una versión admitida del entorno de ejecución, con la primera especificación de la versión más preferida y la última que especifica la versión menos preferida.
<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 admitir .NET Framework 4 o 4.x.
Compatibilidad de versiones para 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 eso se ejecutan automáticamente en la versión de .NET Framework en la que se ejecuta la aplicación.
Debido a esta restricción, las garantías de compatibilidad son especialmente importantes para los componentes. A partir de .NET Framework 4, puede especificar el grado en el que se espera que un componente siga siendo compatible en varias versiones aplicando el System.Runtime.Versioning.ComponentGuaranteesAttribute atributo a ese componente. Las herramientas pueden usar este atributo para detectar posibles infracciones de la garantía de compatibilidad en versiones futuras de un componente.
Compatibilidad con versiones anteriores
.NET Framework 4.5 y versiones posteriores son compatibles con versiones anteriores de las aplicaciones creadas con versiones anteriores de .NET Framework. En otras palabras, las aplicaciones y los componentes creados con versiones anteriores funcionarán sin modificaciones en .NET Framework 4.5 y versiones posteriores. Sin embargo, de forma predeterminada, las aplicaciones se ejecutan en la versión de Common Language Runtime para la que se desarrollaron, por lo que es posible que tenga que proporcionar un archivo de configuración para permitir que la aplicación se ejecute en .NET Framework 4.5 o versiones posteriores. Para obtener más información, consulte la sección Compatibilidad de versiones para aplicaciones anteriormente en este artículo.
En la práctica, esta compatibilidad se puede romper por cambios aparentemente inconsecuentes 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 versión de .NET Framework incluye correcciones de errores y cambios relacionados con la seguridad que pueden afectar a la compatibilidad de algunas aplicaciones y componentes.
Si la aplicación o el componente no funcionan según lo previsto en .NET Framework 4.5 o una versión posterior, use las siguientes listas de comprobación:
Si la aplicación se desarrolló para ejecutarse en cualquier versión de .NET Framework a partir de .NET Framework 4.0, consulte 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, consulte también Problemas de migración de .NET Framework 4.
Si tiene una aplicación de .NET Framework 2.0, consulte también Cambios en .NET Framework 3.5 SP1.
Si tiene una aplicación de .NET Framework 1.1, consulte también Cambios en .NET Framework 2.0.
Si va a compilar código fuente existente para que se ejecute en .NET Framework 4.5 o en sus versiones secundarias, o si va a desarrollar una nueva versión de una aplicación o componente que tenga como destino .NET Framework 4.5 o sus versiones puntuales desde una base de código fuente existente, compruebe ¿Qué está obsoleto en la biblioteca de clases para los tipos y miembros obsoletos? y aplique la solución alternativa descrita. (El código compilado anteriormente seguirá ejecutándose con tipos y miembros marcados como obsoletos).
Si determina que un cambio en .NET Framework 4.5 ha roto la aplicación, compruebe el esquema de configuración en tiempo de ejecución 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 para .NET o abra un problema en el repositorio de GitHub Microsoft/dotnet.
Ejecución simultánea
Si no encuentra una solución alternativa adecuada para el problema, recuerde que .NET Framework 4.5 (o una de sus versiones secundarias) se ejecuta en paralelo con las versiones 1.1, 2.0 y 3.5, y es una actualización local que reemplaza a la versión 4. En el caso de las aplicaciones destinadas 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 mejor entorno. Para obtener más información sobre la ejecución en paralelo, consulte Ejecución en paralelo.