How can I see the strong name of my assembly?
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. }
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, 2020Comments
-
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 almost 11 yearsso... no way to do this from Visual Studio, when the project source is loaded, then?
-
Jeremy Holovacs almost 11 yearssn -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 almost 11 yearsYes 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 addsn.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 theTools
menu.