53

How do I find out the fully qualified name of my assembly such as:

MyNamespace.MyAssembly, version=1.0.3300.0, 
Culture=neutral, PublicKeyToken=b77a5c561934e089

I've managed to get my PublicKeyToken using the sn.exe in the SDK, but I'ld like to easily get the full qualified name.

starblue
  • 51,675
  • 14
  • 88
  • 146
inspite
  • 27,551
  • 21
  • 73
  • 91

10 Answers10

148

This is a shameless copy-paste from I Note It Down and is a simple way to get the FQN for the project output:

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

The new tool appears under Tools –> Get Qualified Assembly Name. When the menu item is selected, the assembly name is given in the output window.

David Clarke
  • 12,002
  • 8
  • 80
  • 105
36

If you can load the assembly into a .NET application, you can do:

typeof(SomeTypeInTheAssembly).Assembly.FullName

If you cannot then you can use ildasm.exe and it will be in there somewhere:

ildasm.exe MyAssembly.dll /text
Hallgrim
  • 14,210
  • 10
  • 40
  • 54
  • Actually, that gives you the assembly in which SomeTypeInTheAssembly resides, which you may not have at compile time. – Dave Van den Eynde Mar 18 '09 at 14:29
  • 14
    And I'm not sure "in there somewhere" qualifies as an answer. That ildasm command results in a wall of text, not well formatted. Several of the suggestions below are more complete. – Michael Blackburn Aug 01 '12 at 15:52
  • You can search the output for "MyAssembly, Version=" to find it. If you have grep installed: ildasm.exe MyAssembly.dll /text | grep -A 1 "MyAssembly, Version=" – NotDan Aug 05 '15 at 16:40
  • Unfortunately when the Assembly is obfuscated then the solution with ildasm.exe will not work. – Patrick Jul 11 '17 at 13:35
  • 3
    ```ildasm.exe MyAssembly.dll /text``` does NOT contain full assembly name anywhere in the text. This method is misleading and inaccurate. – Puterdo Borato Nov 09 '17 at 11:47
25

Late to the party, but googled some more about this issue and found this page:

He describes a powershell function that can do this. So. I've never ever used powershell before, but I thought I'd give it a try:

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>

This does the trick mentioned in other answers by using code, except you don't have to create a project to do this - just type away at the prompt ;)

Daren Thomas
  • 61,662
  • 38
  • 143
  • 192
  • Thanks! Ended using the C# version of this `AssemblyName.GetAssemblyName(assemblyPath).FullName` – SuperOli Dec 17 '13 at 17:56
  • And a suggestion is to use the full path to the assembly name and not just the assembly name. FWIW, it doesn't work if you give that way and even if you are in the same directory as the assembly. – Soundararajan Oct 19 '19 at 07:58
9

Use Assembly.GetExecutingAssembly() to get the current assembly, use Assembly.GetEntryAssembly() to get the assembly that started it all, or use Assembly.GetCallingAssembly() to get the assembly of the code that called your function (one up in the stack).

Once you have the right assembly, use the FullName property, as indicated in other answers.

Dave Van den Eynde
  • 16,092
  • 7
  • 56
  • 86
6

Also if you're looking for the Fully Qualified Name for an assembly already in the GAC you can launch a Visual Studio Command Prompt (easiest way to set the correct paths) and use gacutil /l to list all assemblies with their respective FQNs. Use gacutil /l <yourassemblyname> to filter the list to more easily find what you're looking for.

Per Noalt
  • 4,922
  • 2
  • 26
  • 20
5

You can also use open source ILSpy, after you load your assembly it's full name will be diplayed in comments at the top of code window

csharpfolk
  • 51
  • 1
  • 1
5

If you load the assembly (DLL, EXE, etc.) in Reflector it will tell you the full strong name at the bottom.

Richard Slater
  • 6,063
  • 4
  • 47
  • 79
4

JetBrains dotPeek or Telerik JustDecompile are quite good. Just open the DLL and you have the name right away.

uli78
  • 1,004
  • 1
  • 19
  • 27
1

Being old-school and liking cmd better than powershell, I wrote myself this batch script to do it:

@REM fqn.bat <dll_path>
powershell -command "([system.reflection.assembly]::loadfile('%~f1')).FullName"

The %~f1 expands the first parameter to be an absolute path, so running:

fqn mydll.dll 

Will print the fully-qualified name you want.

Scott Stafford
  • 40,202
  • 22
  • 116
  • 163
1

Couple ways.

In code:

Assembly.FullName e.g.

typeof(Thingy).Assembly.FullName

or, if its an installed assembly, from the GAC using the steps in this post on msdn.

joshua.ewer
  • 3,883
  • 3
  • 23
  • 35