当前位置: 代码迷 >> Web前端 >> 所摘引的程序集没有强命名
  详细解决方案

所摘引的程序集没有强命名

热度:108   发布时间:2013-10-29 12:07:57.0
所引用的程序集没有强命名

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)


 

打开命令提示工具


 

1.把程序集添加GAC中: GACUtil /i sample.dll (参数/i是安装的意思)
2
.把程序集移出GAC GACUtil /u sample.dll (参数/u就移除的意思)
 
注意:不能将一个弱命名程序集安装GAC中。


 

方法二:


 

管理工具->Microsoft   .NET   Framework   2.0   配置->管理->我的电脑->程序集缓存->选中右键“添加”->将程序集添加到程序集缓存.
  相关解决方案