日期:2014-05-18  浏览次数:21273 次

DLL文件添加强名称,出错
看了网上有2中方法:
方法一、ildasm 和ilasm 命令
为没有源码的DLL文件添加强名称
如果项目中引用了其他没有源码的dll文件,并且此dll文件是没有强名称的程序集,则编译时会出现类似 "Assembly generation failed -- 引用的程序集 'xxxxxxxxxxx' 没有强名称" 这样的错误。
我这里引用的是Interop.Scripting.dll程序集,它不是强名称的,则需要进行以下操作:
1.打开SDK 命令提示窗口;
2.创建一个新的随机密钥对:
sn -k mykey.snk
3.反编译目标程序集
ildasm WebApplication4.dll /out=WebApplication4.il
3.重新编译,附带强命名参数
ilasm WebApplication4.il /dll /resource=WebApplication4.res /key=mykey.snk /optimize
4.验证签名信息
sn -v Interop.Scripting.dll 
OK,将生成的dll文件重新引入到项目中然后编译。 
执行到3.重新编译,附带强命名参数是失败,ildasm 命令和ilasm 不在同一目录下,将文件拷贝过去执行后,报错无法启动此程序,因为计算机中丢失fusion.dll。尝试重新安装该程序以解决此问题
方法二:al.exe
Al.exe /out:WebApplication4.dll /keyfile:mykey.snk
或者Al.exe /out:WebApplication4.dll /keyfile:mykey.dat
错误ALINK: error AL1016: 没有指定有效的输入文件,WebApplication4.dll ,mykey.snk,mykey.dat文件都存在
问题:为没有源码的DLL文件添加强名称 是用ildasm 和ilasm 命令还是al.exe?
如果2个都可以区别是什么

------解决方案--------------------
从新生成!
------解决方案--------------------
不一定需要強簽名的