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 内容的错误。

  • 相关阅读:
    Sum Root to Leaf Numbers 解答
    459. Repeated Substring Pattern
    71. Simplify Path
    89. Gray Code
    73. Set Matrix Zeroes
    297. Serialize and Deserialize Binary Tree
    449. Serialize and Deserialize BST
    451. Sort Characters By Frequency
    165. Compare Version Numbers
    447. Number of Boomerangs
  • 原文地址:https://www.cnblogs.com/kuku/p/12487172.html
Copyright © 2011-2022 走看看