Empezamos una nueva sección llamada #questionOfTheDay donde escribiré algunas preguntas comunes y cortas para compartirlas con la comunidad. Hoy veremos que es el famoso PublicKeyToken y como lo obtengo de un ensamblado (dll o exe).

PublicKeyToken

Un public key token es el hash de 64 bits de la clave pública que corresponde a la clave privada usada para firmar el ensamblado. Cuando firmamos un ensamblado entonces se puede decir que ese ensamblado tiene un nombre fuerte (strong name).

El public key token es usado para que el nombre el ensamblado sea único y que incluso si existe otro ensamblado con el mismo nombre este sea reconocido como diferente.

Este token también nos permite prevenir spoofing attacks, donde el cracker trataría de pasar un ensamblado y aparentar ser otro. Firmando nuestro ensamblado nos aseguramos de que nadie pueda impersonarnos (hacerse pasar por nosotros) y generar ensamblados con nuestro nombre pues no conoce la clave privada.

Problema: Necesito el publicKeyToken de un ensamblado

Hay ocasiones, como cuando configuramos un re-direccionamiento de ensamblados (assembly redirect) que necesitamos conocer el publicKeyToken de un ensamblado. Veamos cómo obtenerlo.

  1. Abramos el Developer Command Prompt de la versión de Visual Studio que tengamos instalado (2015 en mi caso).

  2. Usamos el utilitario sn para obtener el publicKeyToken.

     $> sn -T YourAssembly.dll
    

En mi ejemplo, utilizare la ruta de mi ensamblado de EntityFramework ubicado en D:\Projects\LearnIT\packages\EntityFramework.6.1.3\lib\net45
\EntityFramework.dll
.

  1. Y voilà!! Tenemos el publickeyToken.