C#第三方dll 强签名(已有签名)笔记
在做项目的时候,自己的项目是已经有签名的,直接引用的的话会报错误,如下错误:
“System.IO.FileLoadException: 未能加载文件或程序集“AdvancedHMIDrivers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。需要强名称程序集。 (异常来自 HRESULT:0x80131044)
文件名:“AdvancedHMIDrivers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”
网上了解后需要给第三方dll强名,强名的方法大同小异,但是我在根据网上方法做的时候,一直报错,研究了许久,才知道是细节问题,命令行的空格要注意,空格、空格、空格~ 所有写下这个笔记。
因为我的项目已经有签名建KEY,所以不需要生成强签名建。(需要生成签名KEY网上查找下哈)
第一步:反编译dll
把需要强签名的DLL放在一个文件夹下,签名建KEY文件也放在同一个文件下,打开命令行窗口(管理员),cd到此文件夹目录,执行以下命令:
"C:Program Files (x86)Microsoft SDKsWindowsv10.0AinNETFX 4.6.1 Toolsildasm.exe" C:DapperExtensions.StrongName.dll /output=C:DapperExtensions.StrongName.il
(ildam.exe目录、dll替换成本机的)
第二部:生成强签名dll
接着执行,以下命令:
"C:WindowsMicrosoft.NETFrameworkv2.0.50727ilasm.exe" C:DapperExtensions.StrongName.il /dll /out=C:DapperExtensions.StrongName.dll /key=C:ClsCustomerKEY.snk /resource=C:DapperExtensions.StrongName.res
就生成了。注意 / 前面都有空格。
重新引用到项目就行了。
第三部:验证dll
还可以验证以下生成的dll
"C:Program Files (x86)Microsoft SDKsWindowsv10.0AinNETFX 4.6.1 Toolssn.exe" -v C:DapperExtensions.StrongName.dll