惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
GbyAI
GbyAI
Stack Overflow Blog
Stack Overflow Blog
Apple Machine Learning Research
Apple Machine Learning Research
The Cloudflare Blog
WordPress大学
WordPress大学
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Microsoft Azure Blog
Microsoft Azure Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 聂微东
L
LangChain Blog
云风的 BLOG
云风的 BLOG
Jina AI
Jina AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
I
InfoQ
大猫的无限游戏
大猫的无限游戏
MyScale Blog
MyScale Blog
人人都是产品经理
人人都是产品经理
小众软件
小众软件
量子位
The GitHub Blog
The GitHub Blog
博客园 - 【当耐特】

博客园 - 蒋雷军

在2015中使用V12版本的ReportView控件,会导致winform窗体不能正常打开 小心DriveInfo类IsReady属性的较大延迟问题 Overloads和Overrides在元属性继承上的特性 如何使rdlc报表的表头在每一页都显示 无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型,原因为没有注册类 引用账户当前已锁定,且可能无法登录”--问题的解决方法(转载) win7访问windows server 2003服务器出现未知的用户名或者错误的密码(转载) NewRowNeeded和UserAddedRow事件以及RowsAdded的区别使用 TabControl控件中TabPage的显示和隐藏 参数计数不匹配,未处理System.Reflection.TargetParameterCountException 设定了自定义属性,来控制控件的宽度或高度,但数据会不正常 Windows 7如何限制运行特定的应用程序(转载) 怎么通过应用程序控制策略限制软件运行?(转载) 32位程序在64位电脑下运行, 如何让圆珠笔起死回生 密度采集调整 MIME类型大全 C# 构造函数如何调用父类构造函数或其他构造函数 结合RibbonControl设计MDI窗体,在子窗体关闭后,顶部显示额外的控制栏残影
如何使一个你没有源代码的DLL文件变为强命名的DLL
蒋雷军 · 2014-06-20 · via 博客园 - 蒋雷军

转载:

有时候你会需要一个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文件重新引入到项目中然后编译。