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

推荐订阅源

美团技术团队
D
DataBreaches.Net
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
Docker
N
Netflix TechBlog - Medium
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
C
Check Point Blog
腾讯CDC
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
IT之家
IT之家
月光博客
月光博客
U
Unit 42
K
Kaspersky official blog
T
Threatpost
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
GbyAI
GbyAI
P
Proofpoint News Feed
Last Week in AI
Last Week in AI
云风的 BLOG
云风的 BLOG
酷 壳 – CoolShell
酷 壳 – CoolShell
I
InfoQ
Engineering at Meta
Engineering at Meta
Recorded Future
Recorded Future
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
Security @ Cisco Blogs
MyScale Blog
MyScale Blog
大猫的无限游戏
大猫的无限游戏
Security Archives - TechRepublic
Security Archives - TechRepublic
Webroot Blog
Webroot Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
S
Schneier on Security
S
Secure Thoughts
The Register - Security
The Register - Security
B
Blog RSS Feed
The Last Watchdog
The Last Watchdog
P
Palo Alto Networks Blog
爱范儿
爱范儿
B
Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
N
News and Events Feed by Topic
阮一峰的网络日志
阮一峰的网络日志
L
LINUX DO - 热门话题
C
Cisco Blogs
Spread Privacy
Spread Privacy
F
Full Disclosure
博客园 - 聂微东
T
The Blog of Author Tim Ferriss

博客园 - 匡匡

Vue 父子组件通信方式 Vue: 组件扩展 WebClient 指定出口 IP IIS8 下 JS, CSS 等静态文件出现 500 错误 使用 ffmpeg 转换 mov 视频 2020-01-08 工作日记:无题 .Net Core 程序集管理说明(加载) .NET CORE 动态加载 DLL 的问题 ASP.NET 后台 COOKIE 的设置 使用 sql server 默认跟踪分析执行的 SQL 语句 Nginx深入详解之upstream分配方式 使用 HttpWebRequest 类做 POST 请求没有应反 webpack 里的 import, exports 实现原理 使用 pdf.js 查看发票时,显示不了台头和印章的解决办法 Flex 布局里 input 宽度最小 150px 的问题, 浏览器 BUG? 使用像素单位设置 EXCEL 列宽或行高 sweetalert 快速显示两个提示, 第二个显示不出的问题 加权轮询和加权随机算法 在 Docker 中部署 ASP.NET CORE 应用
使用 ildasm 和 ilasm 修改程序集的的引用信息
匡匡 · 2020-03-13 · via 博客园 - 匡匡

 最近升级了一个项目, 把框架从 .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 内容的错误。