我如何签署一个已经内置到dll特定flute.dll的程序集

时间:2009-09-04 15:29:34

标签: asp.net visual-studio-2008 dll assembly-signing

我想签署dll的原因是因为我想将它添加到全局程序集缓存中。程序集是一个用Java编写并移植到J#的css解析引擎。我使用VS2008所以我不能制作J#项目。它没有分配给它的强名称密钥,我现在不知道如何构建它。

有人有什么想法吗?

5 个答案:

答案 0 :(得分:43)

经过一番搜索后,我发现this post解释了一种做法。

<强> Exerpt:

在VS.NET命令提示符下,输入以下内容:

  1. 生成KeyFile: sn -k keyPair.snk
  2. 获取所提供程序集的MSIL: ildasm提供了Assembly.dll /out:providedAssembly.il
  3. 重命名/移动原始程序集: ren提供了Assembly.dll提供的assembly.dll.orig
  4. 从MSIL输出和程序集KeyFile创建一个新程序集: ilasm providedAssembly.il / dll / key = keyPair.snk

答案 1 :(得分:18)

第1步:拆卸装配

ildasm myTest.dll /out:myTest.il 

第2步:使用强名称密钥重新汇总

ilasm myTest.il /res:myTest.res /dll /key:myTest.snk /out:myTestSN.dll 

要进行验证,您可以使用以下命令:

sn -vf myTestSN.dll

希望这有帮助!

答案 2 :(得分:3)

此链接还说明了如何执行此操作,包括您签署的第三方程序集之一何时引用了您要签名的另一个未签名程序集:

http://buffered.io/posts/net-fu-signing-an-unsigned-assembly-without-delay-signing

编辑:抱歉,链接已被破坏。

答案 3 :(得分:1)

Strong Name tool可以使用-R选项重新签名现有程序集。但是,根据我的理解,程序集必须先签名或延迟签名...不确定是否可以将它与未签名的程序集一起使用,但是你可以尝试一下

答案 4 :(得分:0)

特别是PJ8在8年前发布了答案,今天仍然救了我。 &#34;我&#34;程序集需要进入GAC,但依赖于SQLite-pcl-net,从版本1.3.1开始,虽然它现在依赖于强名称的SQLitePCLRaw.bundle_green,但它的名称并不强。所以我不得不签署SQLite-pcl-net,换句话说就是签署我自己的程序集。我最后得到了一篇从这篇文章中的信息中巩固的从摇篮到坟墓的.bat文件以及我今天旅行过的其他一些地方。 &#34;职业选手&#34; 1.此.bat在您要签名的程序集的位置运行2.至少显示三个工具在dev计算机上可能位于何处的提示。 3.按顺序显示所有步骤。 &#34; con&#34;当然,你的里程可能会有所不同,ildasm,ilasm和sn实际上位于你的特定PC上。无论如何欢呼。

REM Create a new, random key pair
"c:\program files (x86)\microsoft sdks\windows\v8.1a\bin\NETFX 4.5.1 Tools\sn" -k SQLite-net.snk
REM Store the key in the container MySQLiteKeys in the strong name Cryptographic Services Provider (CSP).
"c:\program files (x86)\microsoft sdks\windows\v8.1a\bin\NETFX 4.5.1 Tools\sn" -i SQLite-net.snk MySQLiteKeys
REM Disassemble to Intermediate Language
"c:\program files (x86)\microsoft sdks\windows\v8.1a\bin\NETFX 4.5.1 Tools\ildasm" SQLite-net.dll /out:SQLite-net.il
REM Rename original file
ren SQLite-net.dll SQLite-net.dll.orig
REM Reassemble to a strong-named version
"c:\Windows\Microsoft.NET\Framework\v2.0.50727\ilasm" SQLite-net.il /dll /key=SQLite-net.snk /out:SQLite-net.dll 
REM Verify the assembly 
"c:\program files (x86)\microsoft sdks\windows\v8.1a\bin\NETFX 4.5.1 Tools\sn" -v SQLite-net.dll
REM Deletes MySQLiteKeys from the default CSP
"c:\program files (x86)\microsoft sdks\windows\v8.1a\bin\NETFX 4.5.1 Tools\sn" -d MySQLiteKeys
REM View results 
pause