我怎么能看到我的集会的强大名称?

时间:2013-06-29 01:19:49

标签: c# visual-studio visual-studio-2012 .net-assembly strongname

我有一个项目,我为它创建了一个强名称密钥文件。

我怎么知道我的集会的强名是什么?看来这应该是显而易见的,但我找不到任何参考。

4 个答案:

答案 0 :(得分:21)

您可以使用Strong Name工具来确定程序集是否具有强名称。在命令提示符下,您可以执行此操作以验证它是一个强命名的程序集。

sn -v "C:\MyAssemblyPath"

要获取公共令牌,您可以执行此操作

sn -T "C:\MyAssemblyPath"

您还可以使用ReflectorILSpy查找公钥令牌。

如果要获取程序集的全名,包括公共令牌,可以使用Assembly.FullName

Assembly.GetExecutingAssembly().FullName;

答案 1 :(得分:21)

您可以使用Reflector或ILSpy等工具获取完全限定名称。选择组件,它应该在它的顶部。对于ILSpy中的XNA:

// 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

如果您不想使用这些工具,可以使用Windows资源管理器和Visual Studio命令提示符找出完全限定名称。

首先,右键单击Assembly DLL - >属性 - >细节。在这里,您可以找到大会的名称,版本和文化。

对于公钥,启动Visual Studio命令提示符并写入:

sn -Tp YourAssembly.dll

它将为您提供公钥。

现在你可以伪造完全合格的名字。

答案 2 :(得分: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);

如果您知道文件名,则可以处理PE headers to find the strong name signature。     }

答案 3 :(得分:0)

第1步:通过在开始菜单上进行搜索来提示Visual Studio的开发者命令提示符。

第2步:C:\ Windows \ system32>,它将出现在命令提示符下。

第3步:根据需要更改目录。您可以将解决方案目录指定为.cd D:\ Learning \ Projects \ Biztalk \ EAISchemas

步骤4:在命令提示符下,从要存储密钥文件的文件夹中,键入以下命令,然后按Enter:

sn / k文件名.snk

示例:sn / k ErrorHandlingProcess.snk