QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

使用 ILMerge 的内化特性时要小心了

  • 2010-08-10
  • 本文字数:851 字

    阅读完需:约 3 分钟

ILMerge 是个.NET 实用工具,可以将多个程序集合并为一个并将类型的可见性由 public 改为 internal。这么做的结果既有积极的一面,也有消极的一面,取决于用户如何使用生成的结果集。

如果开发者创建好了框架或应用,想将其与所有依赖的框架或库绑定起来以向用户隐藏这些内容,同时使得最终的框架易于安装与使用,那么 ILMerge 就是个不错的选择。可以通过命令提示符或编程的方式使用 ILMerge。其中一个可设定的属性是 Internalize,它用于隐藏类型信息,这是通过将这些类型变为 internal 实现的。

微软解决方案架构 MVP 与 NServiceBus 之父 Udi Dahan 曾使用过 ILMerge 将 NServiceBus 1.9 版的所有依赖绑定到一个结果集中,但他没有隐藏任何类型信息,这导致了如下后果:

在开发者使用 NServiceBus 时,所有第三方的类型都公开出来了。对于那些碰巧使用同样版本程序库的开发者来说,这没什么问题,但遗憾的是,使用 Castle 等程序库的开发者们非常挑剔所用的版本——这导致了版本冲突,也就是众所周知的“版本地狱”问题。

在 NServiceBus 2.0 中,Dahan 开始使用 Internalize 特性,但他认为并非所有类型信息都应该隐藏起来:

比如说,NServiceBus 在内部使用了 NHibernate 来持久化长期运行的进程(叫做 sagas),我们希望这种实现细节不要与开发者在 NServiceBus 上所进行的工作发生冲突。要想让 NHibernate 正常工作,它需要向配置环境,尤其是 NHibernate.Cfg.MappingSchema 命名空间中的所有类型公开某些类型信息。

某些用户想要访问绑定程序库的 API,但如果他们都是 internal,那就没法访问了。因此,最好不要改变某些类型的信息。一种可能的解决方案就像 NServiceBus 所做的那样,发布两个版本:一个面向一般用户,他们仅仅使用框架而已;另一个包含了核心二进制文件,面向那些想要完全控制框架的用户。

ILMerge 需要使用.NET Framework 2.0+,它可以合并所有的.NET 程序集,包括使用.NET 1.0/1.1 生成的程序集。该工具只能用在 Windows 上,并不支持 Rotor 和 Mono。

查看英文原文: Using ILMerge Internalization with Caution

2010-08-10 08:553688
用户头像

发布了 88 篇内容, 共 266.0 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

以终为始,依托度量指标,多种工具全面提升研发效能

之家技术

工具 团队 效能 AIGC 释产能

释产能,论研效提升之路

之家技术

效率 团队 资源 效能 释产能

实例讲解数据库的定义重载函数

华为云开发者联盟

数据库 后端 华为云 华为云GaussDB 华为云开发者联盟

G口服务器有多快

Geek_f19a80

服务器

爆款元服务!教你如何设计高使用率卡片

HarmonyOS开发者

HarmonyOS

“枫”景独美时,在华为天气发现观赏指南

最新动态

2023年好用的远程协同运维工具当属行云管家!

行云管家

IT运维 远程运维 远程连接 远程系统

GitHub Universe 2023:AI 技术引领软件开发创新浪潮

SEAL安全

GitHub AI 企业号11月PK榜

「冰点还原精灵」Deep Freeze for mac 系统还原工具

加油,小妞!

Deep Freeze 系统还原

率先支持Kuasar!iSulad Sandbox API 简化调用链,沙箱管理能力增强

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟

热换站2D组态 热换机组监测控制系统

2D3D前端可视化开发

物联网 组态软件 智慧供暖 城市换热站 换热机组

ChatGLM3-6B:新一代开源双语对话语言模型,流畅对话与低部署门槛再升级

汀丶人工智能

人工智能 自然语言处理 深度学习 大语言模型 chatglm3

即时通讯技术文集(第23期):IM安全相关文章(Part12) [共15篇]

JackJiang

网络编程 即时通讯 IM

定做舞台租赁LED显示屏要注意什么

Dylan

LED LED显示屏 led显示屏厂家 户内led显示屏

Mac电脑压缩解压工具WinZip激活最新版

胖墩儿不胖y

Mac软件 压缩工具 解压缩软件

保驾“双十一” 博睿数据助力电商零售迎高峰无烦忧

博睿数据

可观测性 博睿数据

Macos硬件监测和系统维护工具:TechTool Pro for mac

加油,小妞!

系统维护 mac系统维护软件 TechTool Pro

Linux常用命令用法及实现方式

小齐写代码

编程不是写代码,揭秘3种编程新范式:文本、图形和自然语言

代码生成器研究

编程 低代码 代码 编程范式 ChatGPT

最强大模型训练芯片H200发布!141G大内存,AI推理最高提升90%,还兼容H100

Openlab_cosmoplat

使用ILMerge的内化特性时要小心了_.NET_Abel Avram_InfoQ精选文章