How can I see the strong name of my assembly?

36,766

Solution 1

You can get the Fully Qualified Name by using a tool like Reflector or ILSpy. Select the assembly and it should be in top of it. For XNA in ILSpy :

// C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Windows\x86\Microsoft.Xna.Framework.dll // Microsoft.Xna.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553

If you don't want to use those tools, you can figure out the Fully Qualified Name using windows Explorer and Visual Studio Command Prompt.

First, right click on the Assembly DLL -> Properties -> Details. Here you can find the name, version and Culture of your Assembly.

For the public key, launch Visual Studio Command prompt and write :

sn -Tp YourAssembly.dll

It will give you the public key.

Now you can forge Fully Qualified Name.

Solution 2

You can use the Strong Name tool to determine if the assembly is strongly named. In command prompt you can do this to verify it is a strong named assembly.

sn -v "C:\MyAssemblyPath"

and to get the public token, you can do this

sn -T "C:\MyAssemblyPath"

You can also use Reflector or ILSpy to find the public key token.

If you want to get the full name of the assembly, including the public token, you can use Assembly.FullName.

Assembly.GetExecutingAssembly().FullName;

Solution 3

Process[] processlist = Process.GetProcesses();

foreach(Process theprocess in processlist)
{
    string strongName = "N/A";
    try
    {
        strongName = Assembly.ReflectionOnlyLoadFrom(theprocess.MainModule.FileName).FullName;
    }
    catch
    {
        // System process?
    }
    Console.WriteLine("Process: {0} ID: {1} Strong Name: {2}", theprocess.ProcessName, theprocess.Id, strongName);

If you know the filename, you can process the PE headers to find the strong name signature. }

Share:
36,766
Jeremy Holovacs
Author by

Jeremy Holovacs

I am a professional geek, involved with multiple facets of software engineering. Security, scalability, performance, and usability are all key factors in all my products.

Updated on November 16, 2020

Comments

  • Jeremy Holovacs
    Jeremy Holovacs over 3 years

    I have a project, and I created a strong name key file for it.

    How can I tell what the strong name of my assembly is? It seems this should be obvious, but I can't find any reference to it.

  • Jeremy Holovacs
    Jeremy Holovacs almost 11 years
    so... no way to do this from Visual Studio, when the project source is loaded, then?
  • Jeremy Holovacs
    Jeremy Holovacs almost 11 years
    sn -t didn't work for me.. I got "Failed to convert key to token -- Invalid assembly public key." Paul Gillen's answer did work (-Tp) but I have to admit I'm frustrated that this cannot be done within VS. It seems silly to have to resort to a command line for a VISUAL studio tool.
  • keyboardP
    keyboardP almost 11 years
    Yes sorry, it should be a capital T (updated answer). It does seem odd there's no way to do it in VS but you can add sn.exe to the list of external tools and set the argument to be -T $(TargetPath), so it can be accessed directly from VS. I've just tried it and it seems to work fine and will now show the current project's public key each time the tool is selected from the Tools menu.