我有一个项目,我为它创建了一个强名称密钥文件。
我怎么知道我的集会的强名是什么?看来这应该是显而易见的,但我找不到任何参考。
答案 0 :(得分:21)
您可以使用Strong Name工具来确定程序集是否具有强名称。在命令提示符下,您可以执行此操作以验证它是一个强命名的程序集。
sn -v "C:\MyAssemblyPath"
要获取公共令牌,您可以执行此操作
sn -T "C:\MyAssemblyPath"
如果要获取程序集的全名,包括公共令牌,可以使用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