miércoles, agosto 03, 2011

Strong Name for Assembly – Crear un nombre fuerte para un Ensamblado

Hola a tod@s,

Hoy voy a hablarles de un problema que se presenta en algunos casos, cuando desarrollamos una aplicación y nuestros assemblies o dll no están firmados o no tienen un nombre único (fuerte) en inglés Strong Name.

 

Al intentar compilar nuestra solución con estos assemblies nos arroja un mensaje de error: “Assembly generation failed -- Referenced assembly does not have a strong name”.

 

Un ejemplo es cuando se desarrolla un Web Part, para SharePoint, si utilizamos un esquema de N-Capas, nuestros assemblies deben estar firmados para que reconozca Visual Studio que los dll tienen un Strong Name.

 

Para ello debemos primero hacer uso de una utilidad que nos genera un archivo que asegura que nuestro Assembly tiene un Strong Name.

 

Lo primero entonces, es ir al Inicio, Todos los programas, Visual Studio 2010, Visual Studio Tools, y aquí seleccionar Visual Studio Command Prompt, con esto nos aseguramos que la instrucción va a funcionar.

En la ventana de comando escribimos la siguiente instrucción:

[Code]

sn –k ejemplo.snk

[/Code]

En nuestro caso, ejemplo, representa el nombre de nuestro assembly, la instrucción anterior, genera un archivo con la extensión .snk, la cual debemos copiar de la ruta donde ejecutamos el comando anterior y pegarlo dentro de nuestro proyecto.

 

En la consola de comandos nos muestra el siguiente mensaje:

[Code]
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>sn -k SDP.Indicadores.Negocio.snk

Microsoft (R) .NET Framework Strong Name Utility  Version 4.0.30319.1
Copyright (c) Microsoft Corporation.  All rights reserved.

Key pair written to SDP.Indicadores.Negocio.snk
[/Code]

 

Al pegar los archivos .snk en nuestro proyecto, observará algo similar a la siguiente imagen:

image

 

Ahora debemos especificar en las propiedades del proyecto que nuestro proyecto se va a firmar o va a tener un Strong Name.

image

En la ventana de propiedades del proyecto, ubicamos la pestaña de firma o Signing, como lo apreciamos en la imagen:

image

Aquí seleccionamos el check. "”Sign the assembly” y en la lista desplegables ubicamos el archivo .snk que ya incluimos en el proyecto.

Grabamos y compilamos.

Luego compilamos la solución completa, o el proyecto con los nuevos assemblies generados de esta manera y firmados, con esto desaparece el error al momento de compilar.

Espero esto solucione sus problemas a este respecto.

 

Hasta la próxima!!!!