Marcado como obsoleto en la biblioteca de clases .NET Framework

.NET Framework ha cambiado con el tiempo. Cada nueva versión ha agregado nuevos tipos y miembros de tipos que han proporcionado una nueva funcionalidad. Los tipos existentes y sus miembros también han cambiado con el tiempo. Por ejemplo, algunos tipos perdieron importancia cuando la tecnología que admitían fue reemplazada por una nueva y algunos métodos fueron sustituidos por métodos más nuevos que están más completos.

.NET Framework y Common Language Runtime se esfuerzan por ser compatibles con versiones anteriores (permitir que aplicaciones que se desarrollaron con una versión de .NET Framework puedan ejecutarse en la versión siguiente de .NET Framework). Esto hace más difícil quitar simplemente un tipo o un miembro de tipo. En su lugar, .NET Framework indicó que no se debería seguir utilizando un tipo o un miembro de tipo marcándolo como obsoleto o en desuso. Al marcar como obsoleto un tipo o un miembro, los desarrolladores sabían que iba a desaparecer y tenían tiempo para responder a su eliminación. Sin embargo, el código existente que utiliza el tipo o el miembro seguía ejecutándose en la nueva versión de .NET.

Nota:

En .NET (Core), dejar obsoleta una API no significa necesariamente que se quitará la API. Para más información, consulte Eliminación de API en .NET.

El atributo ObsoleteAttribute

.NET Framework indica que un tipo o un miembro de tipo está obsoleto marcándolo con el atributo ObsoleteAttribute. La aplicación del atributo a un tipo o miembro indica que ese tipo o miembro se quitará de alguna versión futura sin interrumpir el código compilado que utiliza ese miembro.

Además de indicar que un tipo o miembro de tipo está obsoleto, ObsoleteAttribute define cómo administra el compilador el código fuente que incluye este tipo o miembro. El compilador puede compilar el código pero emitir un mensaje de advertencia o puede tratar el uso del tipo o miembro como un error. En el primer caso, el código puede compilarse correctamente, pero un mensaje de advertencia indica que el tipo o miembro está obsoleto. En el segundo caso, se produce un error de compilación.

Incluso si la compilación genera un error en lugar de un mensaje de advertencia, ObsoleteAttribute no afecta al comportamiento en tiempo de ejecución. Es decir, las aplicaciones que utilizan el tipo o miembro y que se han compilado correctamente siempre se ejecutarán correctamente. Solo se produce un error en el intento de volver a compilar una aplicación que utiliza el tipo o miembro.

Cómo controlar los tipos y miembros obsoletos

Al actualizar y volver a compilar el código existente, el uso de un tipo o miembro obsoleto que genera una advertencia del compilador en la aplicación es aceptable. Sin embargo, debería revisar el mensaje de advertencia del compilador para determinar si tiene que cambiar el código de aplicación. Si el mensaje no indica ninguna alternativa adecuada, debe realizar una de las siguientes operaciones:

  • Cambie su código quitando el uso del tipo o miembro, si es posible.

    o bien

  • Revise la documentación para que esta área de tecnología determine cómo responder al desuso.

Puede decidir no volver a compilar un código existente con una versión posterior de .NET Framework. En su lugar, puede especificar la versión de .NET Framework con la que se ejecuta el código compilado existente. Por ejemplo, supongamos que tiene una aplicación llamada app1.exe compilada con .NET Framework 3.5, pero quiere que la aplicación se ejecute con .NET Framework 4.5. Para ello, siga estos pasos:

  1. Cree un archivo de configuración para el ejecutable principal y denomínelo appName.exe.config, donde appName es el nombre del ejecutable de la aplicación. Para la aplicación denominada app1.exe en nuestro ejemplo, va a crear un archivo de configuración denominado app1.exe.config.

  2. Agregue lo siguiente al archivo de configuración.

    <configuration>
       <startup>
          <supportedRuntime version="v4.0" />
       </startup>
    </configuration>
    

Para establecer como destino una versión específica de .NET Framework, asigne uno de los siguientes valores de cadena al atributo version:

Versión de .NET Framework Cadena de version
4.8 (incluida 4.8.1) v4.0
4.7 (incluidas 4.7.1 y 4.7.2) v4.0
4.6 (incluidas 4.6.1 y 4.6.2) v4.0
4.5 (incluidas 4.5.1 y 4.5.2) v4.0
4 v4.0
3.5 v2.0.50727
2.0 v2.0.50727
1.1 v1.1.4322
1.0 v1.0.3705

API obsoletas para .NET Framework 4.5 y versiones posteriores

API obsoletas en versiones anteriores

Vea también