zoukankan      html  css  js  c++  java
  • 使用 ildasm 和 ilasm 修改程序集的的引用信息

     最近升级了一个项目, 把框架从 .NET2.0 升级到 .NET4.0, 把相关的 DLL 也更新了, 如 Newtonsoft.Json。

    今天客户有测试说有一个功能出错了, 提示找不到  Newtonsoft.Json.Net20, 打开这个文件一看, 发现使用了一个第三方的组件, 这个第三方的组件引用了此组件, 坑爹的是这个第三方组件已经没有更新了, 而且也没有源代码,只能想办法把这个第三方组件的引用给改了。

    经过研究,发现可以使用 ildasm 和 ilasm 工具配合来修改程序集的引用。

    1、首先使用 ildasm 打开程序集,然后点 File -> Dump 菜单, 把程序集存为一个 il 的纯文本文件。

    2、然后刚才保存的 il 文件,在文件的开头找到 

    .assembly extern Newtonsoft.Json.Net20
    {
    .publickeytoken = (30 AD 4F E6 B2 A6 AE ED )
    .ver 4:0:2:0
    }

    代码, 把此代码修改为

    .assembly extern Newtonsoft.Json
    {
    .publickeytoken = (30 AD 4F E6 B2 A6 AE ED )
    .ver 12:0:0:0
    }

    3、把代码中的程序集引用需要全部替换: 替换 [Newtonsoft.Json.Net20] 为 [Newtonsoft.Json]

    4、最后使用 ilasm 工具重新编译 il 代码 ilasm source.il /output=assemblyName.dll /dll

    ilasm 有版本限制, 在 Windows/Microsoft/FrameworkXX 下面找到对应的版本, 使用对应版本里的 ILASM 工具进行编译, 否则容易出现识别不了 DLL 内容的错误。

  • 相关阅读:
    计算机网络第五版答案 谢希仁
    AJAX代码示例(不使用AJAX控件)
    软件工程期末资料
    各类编程语言视频教程(300G)
    AJAX无刷新分页练习
    C#使用IrisSkin2.dll美化WinForm程序界面
    asp.net判断浏览器版本代码
    C#中国身份证验证
    在IIS中使用SSL配置HTTPS网站(转)
    silverLight导出报表
  • 原文地址:https://www.cnblogs.com/kuku/p/12487172.html
Copyright © 2011-2022 走看看