Las API de nombre seguro inician PlatformNotSupportedException
Algunas API que no se admiten en .NET/.NET Core, pero que no hacían nada cuando se accedía a ellas, se han cambiado para que ahora inicien PlatformNotSupportedException en un entorno de ejecución. Anteriormente, el uso de estas API daría lugar a una excepción en tiempo de ejecución más adelante; la excepción ahora se produce cuando se crea una instancia del tipo o se accede a ella por primera vez.
Comportamiento anterior
En versiones anteriores, llamar a AssemblyName.KeyPair o StrongNameKeyPair(Byte[]) no era una operación. La llamada StrongNameKeyPair(FileStream) leyó el flujo, pero por lo demás no hizo nada.
Comportamiento nuevo
A partir de .NET 6, cada una de las tres API afectadas produce un PlatformNotSupportedException en el entorno de ejecución.
Versión introducida
.NET 6
Tipo de cambio importante
Este cambio puede afectar a la compatibilidad binaria.
Motivo del cambio
Anteriormente, una aplicación que llamaba a la API se compilaba y se ejecutaba, pero en cuanto se utilizaba la instancia en cualquier ruta de código, iniciaba una excepción en el entorno de ejecución. Para que sea más explícito que este escenario no es compatible, la lógica de inicio de excepciones se movió al constructor de instancia. En caso de que no se creen instancias, la excepción también se produce en puntos de entrada públicos que devuelven este tipo, es decir, AssemblyName.KeyPair.
Acción recomendada
La firma de nombres seguros no se admite en .NET/.NET Core y no hay ninguna solución alternativa.
Nota
.NET Core/5+ nunca comprueba las firmas en su entorno de ejecución. Sin embargo, si tiene como destino bibliotecas multiplataforma (por ejemplo, un paquete de autenticación básico destinado a .NET Standard 2.0, por lo que también se ejecuta en .NET Framework), la nomenclatura segura es una buena idea para la compatibilidad entre entornos de ejecución. .NET Framework sigue aplicando nombres seguros si la aplicación que realiza la llamada tiene un nombre seguro. Puede asignar un nombre seguro a los ensamblados en todas las versiones de .NET mediante la herramienta Sn.exe. Para obtener más información, consulte Firma de nombres seguros.