Compatibilidad de aplicaciones en .NET FrameworkApplication compatibility in the .NET Framework

La compatibilidad es un objetivo importante de todas las versiones de .NET.Compatibility is an important goal of each .NET release. La compatibilidad garantiza que cada versión es aditiva, para que las versiones anteriores sigan funcionando.Compatibility ensures that each version is additive, so previous versions will continue to work. Por otro lado, los cambios en las funciones anteriores (por ejemplo para mejorar el rendimiento, abordar problemas de seguridad o corregir errores) pueden provocar problemas de compatibilidad en el código o las aplicaciones existentes que se ejecutan en una versión posterior.On the other hand, changes to previous functionality (for example, to improve performance, address security issues, or fix bugs) can cause compatibility problems in existing code or existing applications that run under a later version.

Cada aplicación se destina a una versión específica de .NET Framework de esta forma:Each app targets a specific version of the .NET Framework by:

  • Al definir una plataforma de destino en Visual Studio.Defining a target framework in Visual Studio.
  • Al especificar la plataforma de destino en un archivo de proyecto.Specifying the target framework in a project file.
  • Al aplicar TargetFrameworkAttribute en el código fuente.Applying a TargetFrameworkAttribute to the source code.

Al migrar desde una versión de .NET Framework a otra, hay dos tipos de cambios que se deben tener en cuenta:When migrating from one version of the .NET Framework to another, there are two types of changes to consider:

Cambios en tiempo de ejecuciónRuntime changes

Los problemas en tiempo de ejecución son los que aparecen cuando se coloca un nuevo runtime en un equipo y cambia el comportamiento de una aplicación.Runtime issues are those that arise when a new runtime is placed on a machine and an app's behavior changes. Al ejecutarse en una versión más reciente que la seleccionada como destino, .NET Framework usa un comportamiento anómalo para imitar la versión de destino anterior.When running on a newer version than what was targeted, the .NET Framework uses quirked behavior to mimic the older targeted version. La aplicación se ejecuta en la versión más reciente, pero actúa como si se ejecutara en la versión anterior.The app runs on the newer version but acts as if it's running on the older version. Muchos de los problemas de compatibilidad entre versiones de .NET Framework se mitigan a través de este peculiar modelo.Many of the compatibility issues between versions of the .NET Framework are mitigated through this quirking model. Por ejemplo, si un binario se ha compilado para .NET Framework 4.0 pero se ejecuta en un equipo con .NET Framework 4.5 o posterior, se ejecuta en el modo de compatibilidad de .NET Framework 4.0.For example, if a binary was compiled for .NET Framework 4.0 but runs on a machine with .NET Framework 4.5 or later, it runs in .NET Framework 4.0 compatibility mode. Esto significa que muchos de los cambios de la versión posterior no afectan al binario.This means that many of the changes in the later version don't affect the binary.

La versión de .NET Framework a la que se destina una aplicación se determina por la versión de destino del ensamblado de entrada para el dominio de aplicación en el que se ejecuta el código.The version of the .NET Framework that an application targets is determined by the target version of the entry assembly for the application domain that the code runs in. Todos los ensamblados adicionales que se cargan en ese dominio de aplicación tienen como destino esa versión.All additional assemblies loaded in that application domain target that version. Por ejemplo, en el caso de un archivo ejecutable, la versión de destino del archivo ejecutable es el modo de compatibilidad en el que se ejecutan todos los ensamblados de ese dominio de aplicación.For example, in the case of an executable, the version that the executable targets is the compatibility mode all assemblies in that application domain run under.

Para ver una lista de los cambios en tiempo de ejecución que se aplican al entorno, seleccione la versión de .NET Framework que tenga actualmente como destino y, después, la versión a la que quiera migrar:To see a list of runtime changes that apply to your environment, select the .NET Framework version you're currently targeting and then the version you wish to migrate to:

Cambios de redestinaciónRetargeting changes

Los cambios de redestinación son los que surgen cuando se vuelve a compilar un ensamblado para destinarlo a una versión más reciente.Retargeting changes are those that arise when an assembly is recompiled to target a newer version. Destinarlo a una versión más reciente significa que el ensamblado participa en las características nuevas así como en los problemas de compatibilidad potenciales de las características antiguas.Targeting a newer version means the assembly opts into the new features as well as potential compatibility issues for old features.

Para ver una lista de los cambios de redestinación que se aplican al entorno, seleccione la versión de .NET Framework que tenga actualmente como destino y, después, la versión a la que quiera migrar:To see a list of retargeting changes that apply to your environment, select the .NET Framework version you're currently targeting and then the version you wish to migrate to:

Clasificación de impactoImpact classification

En los temas en los que se describen los cambios en tiempo de ejecución y de redestinación, por ejemplo Cambios de redestinación para migrar de 4.7.2 a 4.8, los elementos individuales se clasifican por su impacto esperado, como sigue:In the topics that describe runtime and retargeting changes, for example, Retargeting changes for migrating from 4.7.2 to 4.8, individual items are classified by their expected impact as follows:

MajorMajor
Cambio significativo que afecta a un gran número de aplicaciones o que requiere una modificación sustancial del código.A significant change that affects a large number of apps or that requires substantial modification of code.

MinorMinor
Un cambio que afecta a un pequeño número de aplicaciones o que requiere una leve modificación del código.A change that affects a small number of apps or that requires minor modification of code.

Caso avanzadoEdge case
Cambio que afecta a aplicaciones de escenarios muy concretos que no son frecuentes.A change that affects apps under very specific scenarios that are not common.

TransparenteTransparent
Cambio que no tiene ningún efecto apreciable en el programador o el usuario de la aplicación.A change that has no noticeable effect on the app's developer or user. No es necesario modificar la aplicación debido a este cambio.The app should not require modification because of this change.

Vea tambiénSee also