问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-05-24 15:14

我来回答

1个回答

热心网友 时间:2023-10-18 12:26

为没有源码的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文件重新引入到项目中然后编译。
那么什么叫强命名程序集呢?我们知道,以前在Windows下开发程序时常会遭遇著名的“DLL Hell”问题,即动态链接库的向后兼容问题。微软在.Net产生前曾尝试使用COM组件的方式来解决DLL Hell问题,即使用Guid来唯一的标识每一个COM组件。但是,实际上使用COM组件(包括版本升级)也是一件颇为麻烦的事:为了运行COM组件就必须在组册表中对其进行注册,重新编译有可能破坏Guid从而导致原来引用此COM组件的程序不能正确运行,等等。
在.Net中,微软引入了一种新的解决方案:强命名程序集(Strong Name),以及与之配套的全局程序集缓存(GAC)来解决这个问题。
我们知道,.Net使用Name、Version、Culture、PublicToken四个属性来唯一标识一个程序集,而不同产品前三个属性(Name、Version和Culture)完全相同的情况是有可能发生的,如此一来,这唯一标识程序集可重任就落到PublicToken的头上了。强命名的程序集正是使用RSA来保证PublicToken的唯一性,因为在理论上,非对称算法RSA生成的公钥/私钥对不会重复。.Net正是通过在编译项目时将指定的公钥/私钥对写入程序集来保证其唯一性。
对于全局程序集缓存(GAC),MSDN是这样介绍的:安装有公共语言运行库的每台计算机都具有称为全局程序集缓存的计算机范围内的代码缓存。全局程序集缓存中存储了专门指定给由计算机中若干应用程序共享的程序集。
在开发一般的、非共享的程序时,我们不需要使用强命名的程序集,仅将项目(Project)编辑成.DLL或者.EXE即可。但是,如果我们开发的是组件库、框架时,通过对程序集进行强命名,并使用将其部署到GAC中,可以保证我们的程序集不会出现版本问题。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 去面试外贸业务员被录用了,实习期一个月3千,转正3500加提成 正文编辑区的名词解释 出版术语的发稿 审稿的一些术语 新闻稿件的强迫性选择 原稿名词解释 求报刊杂志术语的解释 谁能告诉我定稿的名词解释 名词解释 公文稿本 (简答) gugila groundwiz pro v1.8 有中文版的吗3dsmax园林景观插件gugila groundwiz v1 Gugila GroundWiz v1.85 怎么使用? 求Terragen 4 for Mac(自然景观软件) v4.4.44下载地址? Terragen 4 Mac激活版哪里可以下载? Terragen 4 自然环境渲染软件有破解版吗? 金稻蒸脸仪。很不错 阴历6月有什么特殊日子 仙剑奇侠传三6月初6是什么日子啊 农历6月初6供奉保家仙可以吗? 山东东岳国际经贸合作股份有限公司怎么样? 青岛东环测控有限公司怎么样? 在温州外贸业务员一般一个月能拿到多少工资 如何给ocx,dll控件进行数字签名 去兴乐集团当外贸业务员怎么样,生活充实吗,工资待遇怎么样 如何使用crypt32.dll实现rsa签名 高分求解:刚在上海一家公司做外贸业务员,老板前后两次说的试用期工资不一样,而且转正之后也没说具体 怎么给dll文件免杀、dat文件已经免杀了。dll文件不会。。求教。 C#中如何使用头文件(xxxx.h),以及如何将头文件编译成动态链接库(DLL)? ios 本地工程加载自定义动态库时,需要对动态库进行签名吗 从DLL导入的类如何使用 外贸业务员的工资问题 QQ三国哪里领新手礼包? 今天拿到员工转正申请表,发现上面我的职位是外贸跟单员。我本来应聘的... 请问关门弟子是什么意思?是每天帮师傅关门的弟子吗? 怎么样知道我一共交了多少的增值税,在哪个报表里看的,怎么看 老师,要看之前一共缴纳了多少增值税和附加税,从哪里看? qq三国新人超惠礼包我从15级到50级要吃多少个 腾讯游戏 QQ三国为什么我的号领不到官网新手礼包? 定向运动对大学生的适应能力有什么作用? QQ三国,62级仙术,买新手特惠礼包,就是5.8 Q币有9个新春蟠桃,吃多少个升70级?拜托各位了 3Q QQ三国等级礼包到几级就没了?