Ensamblados con nombre seguro

Al asignar un nombre seguro a un ensamblado, se crea una identidad única para este, lo que puede evitar conflictos de ensamblado.

¿Cómo se obtiene un ensamblado con nombre seguro?

Para generar un ensamblado con nombre seguro es necesario usar la clave privada que se corresponda con la clave pública distribuida con el ensamblado, además del ensamblado en sí. En el ensamblado se incluye el manifiesto del ensamblado, que contiene los nombres y los hash de todos los archivos que componen el ensamblado. Los ensamblados que tengan el mismo nombre seguro deben ser idénticos.

Para asignar nombres seguros a ensamblados puede usar Visual Studio o una herramienta de línea de comandos. Para obtener más información, vea Cómo: Firmar un ensamblado con un nombre seguro o Sn.exe (herramienta de nombre seguro).

Al crear un ensamblado con nombre seguro, este contiene el nombre de texto simple del ensamblado, el número de versión, información opcional de referencia cultural, una firma digital y la clave pública que se corresponda con la clave privada usada para la firma.

Advertencia

Para garantizar la seguridad, no confíe únicamente en el uso de nombres seguros. Estos solo proporcionan una identidad única.

¿Por qué asignar nombres seguros a los ensamblados?

Para .NET Framework, los ensamblados con nombre seguro son útiles en los escenarios siguientes:

  • Cuando quiere habilitar los ensamblados para hacer referencia a ensamblados con nombre seguro, o quiere dar acceso friend a sus ensamblados desde otros ensamblados con nombre seguro.

  • Cuando una aplicación necesita acceder a versiones diferentes del mismo ensamblado. Esto quiere decir que necesita cargar en paralelo diferentes versiones de un ensamblado en el mismo dominio de la aplicación sin que surjan conflictos. Por ejemplo, si existen diferentes extensiones de una API en ensamblados que tienen el mismo nombre simple, los nombres seguros proporcionan una identidad única para cada versión del ensamblado.

  • Cuando no quiere que el rendimiento de las aplicaciones que usan el ensamblado se vea afectado, por lo que el ensamblado debe ser de dominio neutro. Esto requiere nombres seguros, ya que se debe instalar un ensamblado de dominio neutro en la caché global de ensamblados.

  • Cuando quiere centralizar el servicio de la aplicación mediante una directiva de edición, lo que significa que el ensamblado se debe instalar en la caché global de ensamblados.

En .NET Core y .NET 5+, los ensamblados con nombre seguro no proporcionan ventajas materiales. El tiempo de ejecución nunca valida la firma de nombre seguro ni usa el nombre seguro para el enlace de ensamblados.

Si es un desarrollador de código abierto y quiere obtener las ventajas de identidad de un ensamblado con nombre seguro para mejorar la compatibilidad con .NET Framework, considere la posibilidad de proteger la clave privada asociada con un ensamblado en el sistema de control de código fuente.

Vea también