43

我有一个没有强名称的程序集。我没有它的源代码。

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

4

5 回答 5

21

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

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

例子:

> ildasm /all /out=MYASSEMBLY.il MYASSEMBLY.dll
> ilasm /dll /key=key.snk MYASSEMBLY.il
于 2009-08-03T04:52:34.017 回答
10

签署第 3 方程序集的简单GUI方法Assembly Strong Name Signer使用.

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

我发现推荐的ildasm->ilasm在几个地方建议的往返行程很麻烦,最好避免。

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

于 2014-03-19T17:19:21.570 回答
3

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

StrongNameResigner.exe -a "c:\temp" -k "key.snk" Foo.Bar
于 2015-02-19T14:12:50.707 回答
3

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

于 2009-08-03T03:13:33.897 回答
-5
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.
于 2013-05-09T14:00:40.030 回答