所引用的程序集没有强命名
1.打开SDK 命令提示窗口; 也就是VS2012 开发人员命令提示,一般所在目录C:\ProgramData\Microsoft
\Windows\Start Menu\Programs\Microsoft Visual Studio 2012\Visual Studio Tools
2.创建一个新的随机密钥对:直接输入下面的 名字和你的Dll名字一样,他这的名字是Interop.Scripting.Dll然后下面就那样
sn -k Interop.Scripting.snk
3.反编译目标程序集,2完成之后在C:\Program Files (x86)\Microsoft Visual Studio 11.0目录下面
看snk是否存在,然后再把原来的Interop.Scripting.Dll拷贝到和snk同名的文件夹下,然后执行下面的命令
ildasm Interop.Scripting.dll /out=Interop.Scripting.il
3.重新编译,附带强命名参数,执行上面命令之后删除Interop.Scripting.Dll,然后执行下面命令
ilasm Interop.Scripting.il /dll /resource=Interop.Scripting.res /key=Interop.Scripting.snk /optimize
4.验证签名信息,上面命令执行完成之后会重新生成个dll所以就用这个就OKle
sn -v Interop.Scripting.dll
OK,将生成的dll文件重新引入到项目中然后编译。
首先打开visual studio 2005命令提示(开始-->程序-->microsoft visual studio 2005-->visual studio tools-->visual studio 2005命令提示),在其中输入:sn -k PetShop.IBLL.snk回车,这样就生成了 PetShop.IBLL.snk,在路径C:/Program Files/Microsoft Visual Studio 8/VC找到 PetShop.IBLL.snk文件,放在IBLL项目的根目录也就是IBLL目录下,然后打开BLL项目的AssemblyInfo.cs,在里面加入如下代码行:[assembly: AssemblyKeyFile("PetSHop.IBLL.snk")], 然后重新生成PetShop.IBLL项目,这样一个强命名的程序集就生成了。
这个应该使用 程序集的属性 有个签名的 吧签名文件添加进去,把延迟签名去掉就好了
手动添加全局应用程序 缓存
方法一:(如果装有vs2003或是vs2008)