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

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

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

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

如果原始程序集没有这样标记,那么可以使用ildasm.exe进行反汇编,然后使用ilasm.exe重新进行分析并指定/ key参数。 参考文献: [1] [2] 。

例:

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

签署第三方程序集的简单方法是使用Assembly Strong Name SignerGUI版本,可在此处获得: http : //brutaldev.com/post/2013/10/18/NET-Assembly-Strong-Name-Signer 。

它的源代码在Github上可用。 使用Mono.Cecil做肮脏的工作。 也可用作command line工具。

我发现build议在几个地方build议ildasm – > ilasm往返程序繁琐,更好地避免。

我不知道Assembly Strong Name Signer如何处理多个程序集的依赖关系。 如果没有,问题和解决方法在这里描述(2008年出版): http : //buffered.io/posts/net-fu-signing-an- unsigned -assembly-without-delay-signing/

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

看看我的StrongNameResigner 。 它可以签署或者退出一个程序集和所有依赖它的程序集,同时也可以使用如下命令更新所有的引用:

 StrongNameResigner.exe -a "c:\temp" -k "key.snk" Foo.Bar 
 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.