Strong named assemblies en VB.NET, C# y C++/CLI
¿De qué sirve tener "strong named assemblies"?
- Un "strong name" es único. Así, si una assembly tiene nombre único, todos los tipos definidos en ella tienen nombre único también.
- Las assemblies con nombre débil sólo pueden ser encontradas si se las coloca en el directorio de la aplicación o en subdirectorios especiales (como System32). Las assemblies con nombre fuerte tienen más posibilidades (más sobre eso en próximos posts).
- Cuando se busca una dll en tiempo de ejecución, se comparan Nombre, Cultura y Public Key Token. El número de versión sólo se considera cuando la dll buscada es strongly named. Esto busca resolver el DLL Hell y proveer un sistema de versionado más sólido. Si la versión buscada no coincide, la dll no se carga.
- Para que el FxCop y sus amigos no rompan los quinotos :P
Al menos en el Visual Studio 2008 es muy fácil hacer que un proyecto de VB.NET o C# genere una assembly con nombre fuerte. La idea es tener un archivo con una clave de criptografía pública (Public Key Token) y referenciarlo desde el proyecto.
Una advertencia: Las assemblies Manejadas puras con strong name (C#, VB.NET, etc) sólo pueden referenciar assemblies Manejadas o Mixtas con strong name (C#, VB.NET, C++/CLI, etc). No hay problema si se referencia una assembly nativa/no manejada sin strong name.
Instrucciones para proyectos manejados (MSDN)
Instrucciones para proyectos C++/CLI (es un poquito menos directo)
Comments
Post a Comment