¿Cuáles son las ventajas de utilizar ensamblados con nombre seguro?
¿Cuáles son las cosas que no se pueden hacer con un montaje normal?
Permítanme enumerar los beneficios de nombrar su ensamblado de manera sólida primero:
La asignación de un nombre seguro a su ensamblado le permite incluir su ensamblado en la caché de ensamblados global (GAC). Por tanto, te permite compartirlo entre múltiples aplicaciones.
La nomenclatura segura garantiza un nombre exclusivo para ese ensamblado. Por lo tanto, nadie más puede usar el mismo nombre de ensamblado.
El nombre seguro protege el linaje de la versión de un ensamblado. Un nombre seguro puede garantizar que nadie pueda producir una versión posterior de su ensamblado. Los usuarios de la aplicación tienen la garantía de que una versión del ensamblado que están cargando proviene del mismo editor que creó la versión con la que se creó la aplicación.
Más información sobre la nomenclatura segura de Microsoft se encuentra en Ensamblados con nombre seguro ( MSDN ).
Dado que todas las discusiones que comenzaron con el surgimiento de Nuget sugirieron deshacerse por completo de los ensamblados con nombres fuertes, mi empresa lo intentó y se encontró con un cambio significativo de comportamiento en lo que respecta a la configuración de la aplicación:
Si utiliza la aplicación automática o la configuración de la aplicación de ámbito de usuario proporcionada por VisualStudio (heredando System.Configuration.ApplicationSettingsBase), un EXE con nombre fuerte creará exactamente 1 directorio dentro de% LOCALAPPDATA% llamado, por ejemplo, "YourApplication.exe_StrongName_kjsdfzsuzdfiuzgpoisdiufzsdouif" sin importar dónde esté el EXE situado.
Pero sin el nombre seguro, la ubicación (= ruta) del EXE se usará para crear un valor hash que ya difiere entre la compilación DEBUG y RELEASE, creando muchos directorios dentro de% LOCALAPPDATA% llamados como "YourApplication.exe_Url_dfg8778d6fs7g6d7f8g69sdf". Esto lo hace inutilizable para implementaciones ClickOnce donde el directorio de instalación cambia con cada actualización.
fuente
Me gustaría agregar que sin un nombre seguro no puede usar redireccionamientos vinculantes en archivos de configuración.
Esto no funcionará:
Necesitas tener un token de clave pública
fuente
Solo un ejemplo: me gustaría dar una respuesta haciendo más énfasis en la seguridad . En el caso de que creamos ensamblados con un código fuente que no queremos que sea reutilizado por un tercero pero queremos que sea comprobable, podemos firmar fuertemente un ensamblaje y hacer que los componentes internos sean visibles solo para aquellos ensamblados con el misma firma.
fuente