如何使用强名称签署.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 Signer
的GUI
版本,可在此处获得: 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.