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

Jer*_*acs 27 c# strongname .net-assembly visual-studio visual-studio-2012

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

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

key*_*rdP 26

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

sn -v "C:\MyAssemblyPath"
Run Code Online (Sandbox Code Playgroud)

并获得公共令牌,你可以这样做

sn -T "C:\MyAssemblyPath"
Run Code Online (Sandbox Code Playgroud)

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

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

Assembly.GetExecutingAssembly().FullName;
Run Code Online (Sandbox Code Playgroud)

  • 所以......当加载项目源时,无法从Visual Studio中执行此操作,那么? (2认同)
  • sn -t 对我不起作用..我收到“无法将密钥转换为令牌 - 无效的程序集公钥”。Paul Gillen 的回答确实有效(-Tp),但我不得不承认我很沮丧,因为这不能在 VS 中完成。必须求助于 VISUAL studio 工具的命令行似乎很愚蠢。 (2认同)
  • 是的,抱歉,它应该是大写的“T”(更新的答案)。看起来确实很奇怪,在 VS 中没有办法做到这一点,但你可以将 `sn.exe` 添加到外部工具列表中,并将参数设置为 `-T $(TargetPath)`,这样就可以直接从 VS 访问它。我刚刚尝试过,它似乎工作正常,现在每次从“工具”菜单中选择该工具时都会显示当前项目的公钥。 (2认同)

Pat*_*dam 22

您可以使用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 - > Properties - > Details.在这里,您可以找到大会的名称,版本和文化.

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

sn -Tp YourAssembly.dll

它会给你公钥.

现在您可以伪造完全合格的名称.