2015-09-06 60 views
1

我很困惑。在我读过的一些文章中,PE是一个汇编,IL代码存储在PE中。
在其他人中,我读过PE有一个关联的程序集清单和IL代码存储在PE中。在一些文章中,我已经在汇编中读取了IL存储,并且在PE文件的CLR头部分中存储了用于指示PE文件是.NET可执行文件的信息。 PE文件和.NET程序集是否相同? IL代码存储在哪里?.NET可移植可执行文件VS .NET程序集

回答

0

将组件视为“逻辑”概念。该程序集包含IL代码以及其他类型的数据:资源,元数据,版本信息等。

DLL和EXE文件是驻留在文件系统中的“物理”概念。这些文件在整个历史中都有各种格式,而PE就是其中的一种格式。

程序集通常存储在DLL或EXE中,但不必:可以将程序集发送到内存中并从内存中加载,而无需任何物理(文件系统)表现形式。

A DLL can actually contain more than one assembly,虽然这不是常见的情况。

装配进一步分为modules。模块包含类。通常在给定装配中只有一个模块。

+0

“一个DLL实际上可能包含多个程序集”似乎误导了我,而程序集可能包含dll作为嵌入式资源,我不认为这是大多数人在阅读时会想到的。该程序集由程序集清单定义,模块(dll,exe,netmodule)无法包含多个不同的程序集清单,并且该规范禁止程序集使用程序集清单拥有多个模块。 –

2

我不明白你看到的区别,我会回答“是”给他们。

更具体地说,您称为PE可执行文件(典型的Windows可执行文件)包含启动.NET VM的存根控件和包含编译的汇编代码以传递给VM的部分。

相关问题