2

ILMerge 是做什么的?

它是创建一个新程序集,还是将多个程序集放入一个 dll 中?

我从以下角度提问:

  • 当我合并具有InternalsVisibleTo彼此属性的程序集时会发生什么?
  • 如果我从完全限定的程序集名称的字符串中进行反射会发生什么

谢谢

4

1 回答 1

7

我不确定您要在合并程序集和将所有内容放入一个文件之间做出什么区分。它所做的是采用一组 .Net 程序集并生成一个包含所有程序集的组合内容的单个程序集。

InternalsVisibleTo这对正在合并的程序集的属性没有影响。运行时使用此属性来允许访问internal程序集之间的构造(否则这是非法的)。由于它们现在都在一个程序集中,尽管它们可以自由访问彼此的internal类型而无需使用InternalsVisibleTo. 所以简而言之,如果在internal合并之前访问是有效的,那么在合并之后也是有效的。

我不确定反射和完全限定的程序集名称是什么意思。但似乎有两种情况我能想到

  1. 在运行时获取类型汇编限定名。这仍然可以正常工作,但您将获得合并的程序集名称而不是原始程序集名称
  2. 将类型的限定名称硬编码到项目中。如果您在合并之前使用程序集名称,这将导致问题,因为该类型不再存在。
于 2010-10-27T15:30:53.940 回答