与 PFX 文件合并

2024-03-13

VS2012 似乎使用 PFX 文件而不是 SNK 文件进行签名。我的印象是这与延迟签名有关;但我不在乎。

当我构建应用程序时,我可以使用“an -to ”并查看它是否已签名。

当我合并调试文件夹并使用 /keyfile 指令(我成功地处理 SNK 文件的方式)时,DLL 合并为一个未签名的 DLL。

我读过一些文章,提出了巧妙的解决方法,例如从原始 DLL 中提取公钥,然后在 /keyfile 指令中使用它......这也无法让我创建强签名的 DLL。

那么,我需要做什么才能让 ilmerge 处理 PFX 文件,以便我的程序集成为强类型?

Thanks


我最近尝试做同样的事情(这次是使用 VS 2015,但我确信结果是相同的)。

PFX 文件默认受密码保护,ILMerge(在撰写本文时)似乎不支持它们。

手动签名

正如您所描述的“聪明的解决方法”在这里介绍 http://blog.nerdbank.net/2009/06/how-to-get-ilmerge-to-work-with-pfx.html,这似乎是实现这一目标的唯一方法:

>sn -p some.pfx some.pub
>ilmerge /keyfile:some.pub /delaysign /out:merged\some.dll some.dll
>sn -R merged\some.dll some.pfx

请注意,从 PFX 文件中提取公钥需要用户输入 - 据称以前可以通过管道输入密码,但当前版本sn.exe不允许控制台重定向。

自动(CI 构建系统)签名

为了以自动方式对 ILMerged 程序集进行强签名,有必要将它们的密钥安装在本地构建计算机上。这仍然需要用户以密码输入的形式输入,但只需在每个构建机器上执行一次。

和以前一样,我们需要从 PFX 文件中提取公钥(这只需要执行一次,PUB 文件可以与 PFX 一起保存,甚至可以签入源)。

这是一次性设置代码(两者都需要输入密码):

>sn -p some.pfx some.pub
>sn -i some.pfx SomeContainerName

在自动构建过程中,现在可以运行:

>ilmerge /keyfile:some.pub /delaysign /out:merged\some.dll some.dll
>sn -Rc merged\some.dll SomeContainerName
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与 PFX 文件合并 的相关文章

随机推荐