【问题标题】:How to sign a .NET Assembly DLL file with a Strong Name? [duplicate]如何使用强名称签署 .NET 程序集 DLL 文件? [复制]
【发布时间】:2010-11-16 06:30:55
【问题描述】:

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

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

【问题讨论】:

    标签: .net code-signing


    【解决方案1】:

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

    如果原来的程序集没有这么标记,那么你可以用 ildasm.exe 反汇编它,然后用 ilasm.exe 重新组合它并指定 /key 参数。参考:[1][2]

    例子:

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

    【讨论】:

    • msdn.microsoft.com/en-us/library/xc31ft41(VS.71).aspx MSDN 说使用:al /out:MyAssembly.dll MyModule.netmodule /keyfile:sgKey.snk 。但我没有成功
    • 如何保持 pdb 文件同步?
    • 如果程序集引用了另一个您也在强签名的 DLL,您会收到错误消息,指出它找不到未签名的版本。有没有办法更新文件中引用的 DLL 签名?
    【解决方案2】:

    签署第 3 方大会的简单方法是使用 Assembly Strong Name SignerGUI 版本,可在此处获得:http://brutaldev.com/post/2013/10/18/NET-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/

    【讨论】:

    • 非常好用,谢谢!
    【解决方案3】:

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

    【讨论】:

    • sn.exe 不能这样做,因为 sn.exe 只能用强名称程序集重新签名
    • 如果原始程序集被标记为稍后签名,我认为 sn.exe 可以工作。是吗?
    • 致 Cheeso:是的,你是对的,我找到了方法:ryanfarley.com/blog/archive/2010/04/23/…
    【解决方案4】:

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

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

    【讨论】:

    • 对我不起作用。我得到一个异常:无法找到依赖程序集:Mono.Cecil.AssemblyResolutionException:无法解析程序集:'myassembly.dll,Culture=....
    【解决方案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.
    

    【讨论】:

    • OP:“我没有它的源代码。”
    猜你喜欢
    • 2013-07-20
    • 2015-11-06
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多