Compartir a través de


Atributos de OSPlatform que se han cambiado de nombre o se han quitado

Se han quitado o cambiado el nombre de los atributos siguientes que se introdujeron en .NET 5 Preview 8: MinimumOSPlatformAttribute, RemovedInOSPlatformAttributey ObsoletedInOSPlatformAttribute.

Descripción del cambio

.NET 5 Preview 8 introdujo los siguientes atributos en el System.Runtime.Versioning espacio de nombres.

  • MinimumOSPlatformAttribute
  • RemovedInOSPlatformAttribute
  • ObsoletedInOSPlatformAttribute

En .NET 5 Preview 8, cuando un proyecto tiene como destino un tipo específico del sistema operativo de .NET 5 mediante un identificador de la plataforma de destino como net5.0-windows, la compilación agrega un atributo a nivel de ensamblado System.Runtime.Versioning.MinimumOSPlatformAttribute.

En .NET 5 RC1, ObsoletedInOSPlatformAttribute se ha eliminado, y los nombres de MinimumOSPlatformAttribute y RemovedInOSPlatformAttribute se han cambiado como se indica a continuación:

Nombre en Preview 8 Nombre en RC1 y versiones posteriores
MinimumOSPlatformAttribute SupportedOSPlatformAttribute
RemovedInOSPlatformAttribute UnsupportedOSPlatformAttribute

En .NET 5 RC1 y versiones posteriores, cuando un proyecto tiene como destino un tipo específico del sistema operativo de .NET 5 mediante un moniker de la plataforma de destino como net5.0-windows, la compilación agrega un atributo de nivel SupportedOSPlatformAttribute de ensamblado.

Motivo del cambio

.NET 5 Preview 8 introdujo atributos en System.Runtime.Versioning para especificar plataformas admitidas para las API. El analizador de compatibilidad de plataforma consume los atributos para generar advertencias de compilación cuando se consumen API específicas de la plataforma en plataformas que no admiten esas API.

Para .NET 5 RC1, se ha agregado una característica adicional al analizador de compatibilidad de la plataforma para la exclusión de plataformas. La característica permite que las API se marquen como totalmente no admitidas en las plataformas del sistema operativo. Esa característica solicita cambios en los atributos, incluido el uso de nombres más adecuados. ObsoletedInOSPlatformAttribute se quitó porque ya no era necesario.

Versión introducida

5.0 RC1

Al volver a configurar el proyecto de .NET 5 Preview 8 a .NET 5 RC1, es posible que encuentre errores en tiempo de ejecución o compilación debido a estos cambios. Por ejemplo, es probable que el cambio de nombre de MinimumOSPlatformAttribute genere errores, ya que el atributo se aplica a ensamblados específicos de la plataforma en tiempo de compilación y los artefactos de compilación antiguos seguirán teniendo referencia al nombre de la API anterior.

Ejemplo de errores en tiempo de compilación:

  • Error CS0246: No se ha encontrado el tipo o el nombre del espacio de nombres "MinimumOSPlatformAttribute" (¿falta una directiva "using" o una referencia de ensamblado?)
  • Error CS0246: No se ha encontrado el tipo o el nombre del espacio de nombres "RemovedInOSPlatformAttribute" (¿falta una directiva "using" o una referencia de ensamblado?)
  • Error CS0246: No se ha encontrado el tipo o el nombre del espacio de nombres "ObsoletedInOSPlatformAttribute" (¿falta una directiva "using" o una referencia de ensamblado?)

Ejemplo de error en tiempo de ejecución:

Excepción no controlada. System.TypeLoadException: no se pudo cargar el tipo 'System.Runtime.Versioning.MinimumOSPlatformAttribute' del ensamblado 'System.Runtime, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

Para resolver estos errores:

  • Actualice las referencias de MinimumOSPlatformAttribute a SupportedOSPlatformAttribute.
  • Actualice las referencias de RemovedInOSPlatformAttribute a UnsupportedOSPlatformAttribute.
  • Quite las referencias a ObsoletedInOSPlatformAttribute.
  • Recompile el proyecto (o realice una limpieza y compilación) para eliminar los artefactos de compilación antiguos.

Las APIs afectadas

  • System.Runtime.Versioning.MinimumOSPlatformAttribute
  • System.Runtime.Versioning.ObsoletedInOSPlatformAttribute
  • System.Runtime.Versioning.RemovedInOSPlatformAttribute