如何使用强名称签署.NET程序集DLL文件?

时间:2009-08-03 03:02:31

标签: .net code-signing

我有一个没有强名的集会。我没有源代码。

我现在需要签名。有没有办法做到这一点?

5 个答案:

答案 0 :(得分:17)

如果原始程序集标记为延迟签名,则可以使用sn.exe工具。

如果原始程序集未标记,则可以使用ildasm.exe对其进行反汇编,然后使用ilasm.exe重新组合并指定/ key参数。参考文献:[1] [2]

示例:

> ildasm /all /out=MYASSEMBLY.il MYASSEMBLY.dll
> ilasm /dll /key=key.snk MYASSEMBLY.il

答案 1 :(得分:9)

签署第三方程序集的简便方法是使用 GUI Assembly Strong Name Signer ,可在此处找到:http://brutaldev.com/post/2013/10/18/NET-Assembly-Strong-Name-Signer。< / p>

它的源代码可以在Github上找到。使用Mono.Cecil进行肮脏的工作。也可用作command line工具。

我找到了推荐的ildasm - &gt; ilasm往返建议在几个地方繁琐,最好避免。

我不知道Assembly Strong Name Signer如何处理多程序集依赖项。如果没有,问题及其解决方案将在此处描述(2008年出版):http://buffered.io/posts/net-fu-signing-an-unsigned-assembly-without-delay-signing/

答案 2 :(得分:3)

使用强名称工具实用程序(sn.exe)。

答案 3 :(得分:2)

看一下我的StrongNameResigner。它可以签署或重新签名程序集以及依赖它的所有程序集,同时使用如下命令更新所有引用:

StrongNameResigner.exe -a "c:\temp" -k "key.snk" Foo.Bar

答案 4 :(得分:-4)

You can sign the assembly with the help of VS command prompt.
Just type the path in VS cmd prompt where your project is physically present.

In VS cmd
<your project path>sn -k <name of your project>.snk

Then go to your project in Solution Explorer -> properties -> Signing -> check checkbox  
-> Browse to the key which is created using VS cmd.