c# - cache - strongly named key
¿Cómo encuentro el nombre completo de un ensamblaje? (9)
¿Cómo puedo averiguar el nombre completo de mi ensamblaje, como:
MyNamespace.MyAssembly, version=1.0.3300.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089
Logré obtener mi PublicKeyToken usando sn.exe
en el SDK, pero me gustaría obtener fácilmente el nombre completo.
Además, si está buscando el nombre totalmente calificado para un ensamblado que ya está en el GAC, puede iniciar un símbolo del sistema de Visual Studio (la forma más sencilla de establecer las rutas correctas) y usar gacutil /l
para enumerar todos los ensamblajes con sus respectivos FQN. Use gacutil /l <yourassemblyname>
para filtrar la lista y encontrar más fácilmente lo que está buscando.
Este es un copy-paste desvergonzado de I Note It Down y es una forma simple de obtener el FQN para el resultado del proyecto:
Open Visual Studio
Go to Tools –> External Tools –> Add
Title: Get Qualified Assembly Name
Command: Powershell.exe
Arguments: -command "[System.Reflection.AssemblyName]::GetAssemblyName(/"$(TargetPath)/").FullName"
Check "Use Output Window".
La nueva herramienta aparece en Tools –> Get Qualified Assembly Name
. Cuando se selecciona el elemento del menú, el nombre del ensamblado se da en la ventana de salida.
Formas de pareja.
En codigo:
Assembly.FullName por ejemplo
typeof(Thingy).Assembly.FullName
o, si es un ensamblado instalado, desde el GAC usando los pasos en esta publicación en msdn .
JetBrains dotPeek o Telerik JustDecompile son bastante buenos. Simplemente abre la DLL y tienes el nombre de inmediato.
Si carga el ensamblado (DLL, EXE, etc.) en Reflector , le dirá el nombre completo en la parte inferior.
Si puede cargar el ensamblado en una aplicación .NET, puede hacer:
typeof(SomeTypeInTheAssembly).Assembly.FullName
Si no puede, entonces puede usar ildasm.exe y estará allí en alguna parte:
ildasm.exe MyAssembly.dll /text
También puede usar ILSpy de código abierto, después de cargar su ensamblaje, su nombre completo aparecerá en los comentarios en la parte superior de la ventana de códigos
Tarde en la fiesta, pero busqué en Google un poco más sobre este tema y encontré esta página:
Él describe una función powershell que puede hacer esto. Asi que. Nunca he usado powershell antes, pero pensé que lo probaría:
C:/> cd PATH_TO_ASSEMBLY
C:/PATH_TO_ASSEMBLY>powershell
Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.
PS C:/PATH_TO_ASSEMBLY> [System.Reflection.AssemblyName]::GetAssemblyName(''System.Data.SQLite.dll'').FullName
System.Data.SQLite, Version=1.0.66.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139
PS C:/PATH_TO_ASSEMBLY>
Esto hace el truco mencionado en otras respuestas mediante el uso de código, excepto que no tiene que crear un proyecto para hacer esto - simplemente escriba lejos en el prompt;)
Use Assembly.GetExecutingAssembly () para obtener el ensamblado actual, use Assembly.GetEntryAssembly () para obtener el ensamblado que lo inició todo, o use Assembly.GetCallingAssembly () para obtener el ensamblado del código que llamó su función (uno arriba en el apilar).
Una vez que tenga el ensamblaje correcto, use la propiedad FullName, como se indica en otras respuestas.