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

  • 相关阅读:
    小程序支付
    小程序传参
    git
    学习过程遇到问题的解决方法
    进程创建注意事项:函数及对应包
    进程创建:函数及对应包
    mac解决eclipse 端口占用问题
    暴力
    doc2vec
    Java正则表达式的解释说明
  • 原文地址:https://www.cnblogs.com/kuku/p/12487172.html
Copyright © 2020-2023  润新知