.exe和.pe文件的区别?

时间:2015-11-17 12:56:08

标签: c# visual-studio compilation exe portable-executable

编译visual studio c#应用程序时,将生成PE和EXE文件。 那么PE和EXE文件有什么主要区别? 据我所知PE文件包含

PE/COFF Headers,
CLR Headers,
CLR Data,
Meta Data,
IL code,
.data,.text...

比exe包含的?.HEP与EXE有何不同?

3 个答案:

答案 0 :(得分:4)

可移植可执行文件 PE )是包含操作系统正确加载可执行代码的所有必要信息的文件( .exe .dll ,...)

这可能包括linking的动态库引用,资源管理,TLS数据等。

然而,

可执行文件 .exe )是表示计算机程序上主要执行点的文件,即用C#术语表示的文件,包含 Main 功能或入口点。

答案 1 :(得分:2)

因此,PE代表Portable Executable,它是Windows 32位和64位环境中可执行二进制文件的格式文件。

据我了解,生成的PE文件中的信息包括:

  • 接头
  • Metadadata
  • CLR数据段

但是,IL代码将位于EXE文件中,因为它应该是独立于平台的,并且在运行应用程序(Just-in time-compiler)时将编译为本机代码。 PE部分还负责CLR的初始化。

请注意,PE部分可以可执行文件中,这在大多数应用程序中更有意义。

答案 2 :(得分:1)

.exe文件是PE文件的子集,而PE文件包括.exe,.dll和.ocx文件。