我最近正在試圖做一樣的事情(這一次與2015年VS,但我可以肯定的結果是相同的)。
默認情況下PFX文件受密碼保護,ILMerge(撰寫本文時)似乎不支持它們。
手冊簽署
的「聰明的解決方法」爲你描述它is presented here,它似乎是實現這一目標的唯一途徑:
>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