我有一个没有强名的集会。我没有源代码。
我现在需要签名。有没有办法做到这一点?
答案 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.