问题
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.
回答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.
回答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;
回答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. }
来源:https://stackoverflow.com/questions/17375759/how-can-i-see-the-strong-name-of-my-assembly