web-dev-qa-db-fra.com

Comment trouver le nom qualifié complet d'un assemblage?

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é.

45
inspite

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
28
Hallgrim

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.

123
David Clarke

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;)

23
Daren Thomas

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.

9
Dave Van den Eynde

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.

6
Per Noalt

Si vous chargez l'assembly (DLL, EXE, etc.) dans Reflector , il vous indiquera le nom complet complet en bas.

5
Richard Slater

Vous pouvez également utiliser ILSpy open source. Une fois que vous aurez chargé votre assembly, son nom complet sera.

5
csharpfolk

JetBrains dotPeek ou Telerik JustDecompile sont plutôt bons. Ouvrez simplement la DLL et vous avez tout de suite le nom.

4
uli78

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 .

0
joshua.ewer

É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.

0
Scott Stafford