Question

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 à l'aide de sn.exe dans le SDK, mais j'aimerais obtenir facilement le nom complet qualifié.

Était-ce utile?

La solution

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 le faire, vous pouvez utiliser ildasm.exe et le fichier sera quelque part:

ildasm.exe MyAssembly.dll /text

Autres conseils

Ceci est un copier-coller sans vergogne issu de Je le note et constitue un moyen simple d’obtenir le nom de domaine complet 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 indiqué dans la fenêtre de sortie.

En retard pour la fête, mais Google a fait quelques recherches sur ce problème et a trouvé cette page:

Il décrit une fonction powershell capable de le faire. Alors. Je n'ai jamais utilisé PowerShell auparavant, mais je pensais que j'essaierais de le faire:

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 tour 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'écart à l'invite;)

Utilisez Assembly.GetExecutingAssembly () . pour obtenir l'assembly en cours, utilisez Assembly.GetEntryAssembly () pour obtenir l'assembly qui a tout lancé, ou utilisez Assembly.GetCallingAssembly () pour obtenir l’assemblage du code qui a appelé votre fonction (un dans la pile).

Une fois que vous avez le bon assemblage, utilisez la propriété FullName, comme indiqué dans d'autres réponses.

De même, si vous recherchez le nom complet pour 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 respectifs. FQN. Utilisez gacutil /l <yourassemblyname> pour filtrer la liste afin de trouver plus facilement ce que vous cherchez.

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

Vous pouvez également utiliser ILSpy open source. Après le chargement de votre assembly, son nom complet sera affiché dans les commentaires en haut de la fenêtre de code

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

Deux manières.

Dans le 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 in cet article sur msdn .

Étant à la vieille école et aimant mieux cmd que PowerShell, j’ai moi-même é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, donc en cours d'exécution:

fqn mydll.dll 

Imprimera le nom qualifié complet de votre choix.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top