Comment puis-je connaître le nom complet de mon assemblée, tel que:
MyNamespace.MyAssembly, version=1.0.3300.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089
J'ai réussi à obtenir mon PublicKeyToken en utilisant le sn.exe
dans le SDK, mais je voudrais facilement obtenir le nom complet qualifié.
Si vous pouvez charger l'assembly dans une application .NET, vous pouvez effectuer les opérations suivantes:
typeof(SomeTypeInTheAssembly).Assembly.FullName
Si vous ne pouvez pas, alors vous pouvez utiliser ildasm.exe et il sera quelque part:
ildasm.exe MyAssembly.dll /text
Ceci est un copier-coller sans vergogne à partir de I Note It Down et constitue un moyen simple d'obtenir le FQN pour la sortie du projet:
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".
Le nouvel outil apparaît sous Tools –> Get Qualified Assembly Name
. Lorsque l'élément de menu est sélectionné, le nom de l'assemblage est donné dans la fenêtre de sortie.
En retard à la fête, mais googlé un peu plus sur ce problème et a trouvé cette page:
Il décrit une fonction powershell capable de le faire. Alors. Je n'avais jamais utilisé PowerShell auparavant, mais je pensais essayer:
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>
Cela fait le truc mentionné dans d’autres réponses en utilisant du code, sauf que vous n’avez pas à créer de projet pour le faire - il suffit de taper à l’invite;)
Utilisez Assembly.GetExecutingAssembly () pour obtenir l'assembly actuel, utilisez Assembly.GetEntryAssembly () pour obtenir l'assembly qui a tout lancé, ou utilisez Assembly.GetCallingAssembly () pour obtenir l'assembly du code qui a appelé votre fonction (un dans la pile).
Une fois que vous avez le bon assembly, utilisez la propriété FullName, comme indiqué dans d'autres réponses.
De même, si vous recherchez le nom complet d'un assemblage déjà présent dans le GAC, vous pouvez lancer une invite de commande Visual Studio (méthode la plus simple pour définir les chemins d'accès appropriés) et utiliser gacutil /l
pour répertorier tous les assemblys avec leurs noms de domaine respectifs. Utilisez gacutil /l <yourassemblyname>
pour filtrer la liste afin de trouver plus facilement ce que vous cherchez.
Si vous chargez l'assembly (DLL, EXE, etc.) dans Reflector , il vous indiquera le nom complet complet en bas.
Vous pouvez également utiliser ILSpy open source. Une fois que vous aurez chargé votre assembly, son nom complet sera.
JetBrains dotPeek ou Telerik JustDecompile sont plutôt bons. Ouvrez simplement la DLL et vous avez tout de suite le nom.
Deux façons.
Dans du code:
Assembly.FullName par exemple.
typeof(Thingy).Assembly.FullName
ou, s'il s'agit d'un assemblage installé, à partir du GAC en suivant les étapes de ce message sur msdn .
Étant old-school et aimant mieux cmd que powershell, je me suis écrit ce script batch pour le faire:
@REM fqn.bat <dll_path>
powershell -command "([system.reflection.Assembly]::loadfile('%~f1')).FullName"
Le %~f1
étend le premier paramètre à un chemin absolu.
fqn mydll.dll
Imprimera le nom complet que vous souhaitez.