我如何才能看到程序集的强名称

本文关键字:程序集 强名称 | 更新日期: 2023-09-27 18:20:32

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

如何判断程序集的强名称?这似乎很明显,但我找不到任何参考。

我如何才能看到程序集的强名称

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

sn -v "C:'MyAssemblyPath"

为了获得公共代币,你可以做这个

sn -T "C:'MyAssemblyPath"

您也可以使用Reflector或ILSpy来查找公钥令牌。

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

Assembly.GetExecutingAssembly().FullName;

您可以使用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命令提示符来计算完全限定名称。

首先,右键单击程序集DLL->属性->详细信息。在这里,您可以找到程序集的名称、版本和区域性。

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

sn -Tp YourAssembly.dll

它会给你公钥。

现在您可以伪造完全限定名称。

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标头以找到强名称签名。}

步骤1:在开始菜单上搜索visual studio的开发人员命令提示符。

步骤2:C:''Windows''system32>它将在命令提示符下出现。

步骤3:根据您的意愿更改目录。您可以给您的解决方案目录.cdD:''Learning''Projects''Biztalk''EAISchemas

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

sn/k文件名.snk

示例:sn/k ErrorHandlingProcess.snk