obtener how from for .net dll .net-assembly publickeytoken

.net - how - ¿Cómo encuentro el PublicKeyToken para un dll en particular?



how to get public token key for assembly (9)

Necesito recrear un proveedor en mi archivo web.config que se parece a esto:

<membership defaultProvider="AspNetSqlMemProvider"> <providers> <clear/> <add connectionStringName="TRAQDBConnectionString" applicationName="TRAQ" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="0" name="AspNetSqlMemProvider" type="System.Web.Security.SqlMembershipProvider, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> </providers> </membership>

Sin embargo, recibo un error de tiempo de ejecución que indica que este ensamblaje no se puede cargar, y creo que es porque tengo el PublicKeyToken incorrecto. ¿Cómo busco PublicKeyToken para mi ensamblaje?

Alternativamente, ¿voy completamente mal con esto?


Assembly.LoadFile (@ "C: / Windows / Microsoft.NET / Framework / v4.0.30319 / system.data.dll"). FullName

Resultará en

System.Data, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089


Al usar PowerShell , puede ejecutar esta declaración:

([system.reflection.assembly]::loadfile("c:/MyDLL.dll")).FullName

La salida proporcionará la Versión, Cultura y PublicKeyToken como se muestra a continuación:

MyDLL, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 669e0ddf0bb1aa2a


La respuesta es muy simple: use las herramientas de .NET Framework sn.exe . Abra el símbolo del sistema de Visual Studio 2008 y luego señale a la carpeta del dll que desea obtener la clave pública,

Use el siguiente comando

sn –T myDLL.dll

Esto le dará el token de clave pública. Recuerde una cosa, esto solo funciona si el ensamblaje debe estar fuertemente firmado.

Ejemplo

C:/WINNT/Microsoft.NET/Framework/v3.5>sn -T EdmGen.exe Microsoft (R) .NET Framework Strong Name Utility Version 3.5.21022.8 Copyright (c) Microsoft Corporation. All rights reserved. Public key token is b77a5c561934e089


Si tiene la DLL agregada a su proyecto, puede abrir el archivo csproj y ver la etiqueta de referencia.

Ejemplo:

<Reference Include="System.Web.Mvc, Version=3.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />


Solo agregué más información, no pude encontrar la utilidad sn.exe en las ubicaciones mencionadas, en mi caso fue en C: / Archivos de programa (x86) / Microsoft SDKs / Windows / v7.0A / bin


También puede verificar mediante el siguiente método.

Vaya a Ejecutar: escriba la ruta de la DLL para la que necesita la clave pública. Encontrará 2 archivos: 1. __AssemblyInfo_.ini 2. Archivo DLL

Abra este archivo __AssemblyInfo_.ini en el bloc de notas, aquí puede ver el Token de clave pública.


Usando la utilidad sn.exe :

sn -T YourAssembly.dll

o cargando el conjunto en Reflector .


Utilizo Windows Explorer, navego a C: / Windows / assembly, encuentro el que necesito. Desde las Propiedades, puede copiar PublicKeyToken.

Esto no se basa en Visual Studio ni en ninguna otra utilidad que se esté instalando.


sn -T <assembly> en la línea de comandos de Visual Studio. Si se instala un ensamblado en el caché de ensamblados global, es más fácil ir a C:/Windows/assembly y encontrarlo en la lista de ensamblajes de GAC.

En su caso específico, es posible que esté mezclando el tipo de nombre completo con la referencia de ensamblado, es posible que desee echar un vistazo a MSDN .