有时候你会需要一个DLL是强命名的,比如你想把这个文件放到GAC里面。如果这是一个第三方的DLL,你没有源代码,这会是一件比较麻烦的事情。有一个方法可以解决这个问题。

  在VS.NET的命名行窗口下,输入如下的代码。

  1 ,生成一个KeyFile

  sn -k keyPair.snk

  2, 得到程序集的MSIL

  ildasm SomeAssembly.dll /out:SomeAssembly.il

  3 ,为了避免冲突,把原来的DLL文件改名

  ren SomeAssembly.dll SomeAssembly.dll.orig

  4 , 使用导出的MSIL和刚创建的KeyFile生成一个新的的DLL文件。

  ilasm SomeAssembly.il /dll /key= keyPair.snk

  这些工具都在哪里?

  C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ilasm.exe

  C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\ildasm.exe

  C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\sn.exe

  为没有源码的DLL文件添加强名称

  如果项目中引用了其他没有源码的dll文件,并且此dll文件是没有强名称的程序集,则编译时会出现类似 "Assembly generation failed -- 引用的程序集 'xxxxxxxxxxx' 没有强名称" 这样的错误。
我这里引用的是Interop.Scripting.dll程序集,它不是强名称的,则需要进行以下操作:
  1.打开SDK 命令提示窗口;
     2.创建一个新的随机密钥对:
  sn -k Interop.Scripting.snk
  3.反编译目标程序集
  ildasm Interop.Scripting.dll /out=Interop.Scripting.il
  3.重新编译,附带强命名参数
  ilasm Interop.Scripting.il /dll /resource=Interop.Scripting.res /key=Interop.Scripting.snk /optimize
  4.验证签名信息
  sn -v Interop.Scripting.dll
  OK,将生成的dll文件重新引入到项目中然后编译。

转载于:https://blog.51cto.com/sinonqu/1575947

如何使一个你没有源代码的DLL文件变为强命名的DLL相关推荐

  1. 【acadres.dll文件丢失怎么办】acadres.dll文件丢失的解决办法

    acadres.dll文件丢失怎么办?acadres.dll是一个windows系统中必备的dll文件,该类型文件的全称为Dynamic Link Library,意思就是动态链接库,不过各位小伙伴不 ...

  2. 逆战d3dx10_43.dll文件加载失败及dll文件缺失损坏修复解决方案

    废话前言:本人对电脑底层了解不太深,因此在前些天因为idea出现一个显示"构建进程终止异常"的bug,尝试网上很多解决方案都没有成功,无奈之下只好重装系统.但重装系统后,逆战又显示 ...

  3. qt调用c语言编写的dll文件,Qt之调用外部DLL - moki_oschina的个人空间 - OSCHINA - 中文开源技术交流社区...

    预备知识: 1.如果在没有导入库文件(.lib),而只有头文件(.h)与动态链接库(.dll)时,我们才需要显示调用,如果这三个文件都全的话,我们就可以使用简单方便的隐式调用. 2.通常Windows ...

  4. VS2008生成DLL文件的方法、引用dll文件以及意义

    一 VS2008生成dll文件的方法     有两种方法:     1:傻瓜式操作     打开VS2008,依次点击:菜单->文件->新建项目->项目类型visual C#(这里假 ...

  5. python的dll文件在哪_Python运行DLL文件的方法

    什么是DLL文件? DLL文件为动态链接库(英语: Dynamic-link library, 缩写为DLL) 它是微软公司在微软视窗操作系统中实现共享函数库概念的一种实现方式 先来阐述一下DLL(D ...

  6. 卡巴斯基服务器版禁止了.dll文件,卡巴斯基误杀wininet.dll的解决办法

    pop:今天几个同学说卡巴有个提示便点了一下,就无法都无法进入到桌面了,提示wininet.dll文件找不到到网上搜索一了一下,可能是有病毒嵌入到wininet.dll文件里面,所以卡巴提示了. 解决 ...

  7. MathType丢失Mplugin.dll文件解决方法及Mplugin.dll下载

    1.首先你需要下载一个Mplugin.dll文件.下载地址:链接:https://pan.baidu.com/s/1whsrPFr2_3480uTLD541Zg  提取码:ldpr 2.解压下载文件, ...

  8. 计算机丢失dll文件怎么弄,电脑缺少DLL文件该怎么办? 这个办法轻松解决!

    原标题:电脑缺少DLL文件该怎么办? 这个办法轻松解决! 电脑缺少****.文件,这种类似的提示我相信好多人都遇到过,不管是开机提示,还是打开应用提示,其实解决办法很简单的, 请看步骤. 安全卫士修复 ...

  9. java封装dll文件_java类封装成dll

    1,建立测试类,注意英文注释部分,用汉语直接编译会乱码 public classHello {//native method is used for call other language proce ...

  10. lib和dll文件的区别和联系(集合了几个博客的内容)

    lib和dll lib和dll文件的区别和联系 .dll是在你的程序运行的时候才连接的文件,因此它是一种比较小的可执行文件格式,.dll还有其他的文件格式如.ocx等,所有的.dll文件都是可执行. ...

最新文章

  1. 树套树 ---- 树状数组套权值线段树模板题 P2617 Dynamic Rankings 动态第K大
  2. Focal Loss笔记
  3. 多分类神经网络与原子核
  4. TF之DD:利用Inception模型+GD算法生成更大尺寸的Deep Dream精美图片
  5. java常见异常总结---自己工作中经常遇到的一些异常
  6. java daemon线程的作用_JAVA DAEMON线程的理解
  7. CAD制图系列之中心线画法
  8. OSChina 周日乱弹 ——可以囤硬盘了
  9. 在ubuntu linux 中编写一个自己的bash脚本
  10. Java平台划分-J2EE,J2SE,J2ME
  11. 方便好用的论文管理软件EndNote X9 + PDF阅读编辑器Adobe Acrobat DC(1)
  12. 【.Net】.Net操作AD域账号,获取AD用户后可以获取的属性列表 directoryEntry Properties list
  13. 大数据开源框架环境配置(一)——安装VMware
  14. 雷电模拟器连接hb_原生的安卓模拟器来了,微软发布Your Phone,与三星独家合作...
  15. matlab ps液化,已可工作使用的2020系Adobe_Photoshop_2020_21.0.0.37_ACR12.0_SP_20191030
  16. 各种提权、渗透经验技巧总结大全(下)
  17. android 五种存储方式,android数据五种存储
  18. [总结自用]关于Mbps、Mb/s、MB/s以及Mpps的区别及计算
  19. Windows API-GDI入门基础知识详解 来源: PConline.com.cn
  20. Atcode120E 1D Party

热门文章

  1. NMF(非负矩阵分解)的场景应用
  2. numpy教程:统计函数Statistics
  3. 【论文阅读】Automated quantification of white matter lesion in magnetic resonance imaging
  4. python字符串转换为数字_Python不使用int()函数把字符串转换为数字的方法
  5. flink写入 mysql_基于 Binlog + Flink 实现多表数据同构/异构方案
  6. 不是所有的U盘都能作为启动盘
  7. 《马化腾:领跑互联网》— 综合素质提升书籍
  8. Android 用java代码动态修改UI界面
  9. Linux怎么查看编译ARM平台程序的编译器arm-linux-gcc
  10. linux系统下安装python3