我很困惑。在我读过的一些文章中,PE是一个汇编,IL代码存储在PE中。
在其他人中,我读过PE有一个关联的程序集清单和IL代码存储在PE中。在一些文章中,我已经在汇编中读取了IL存储,并且在PE文件的CLR头部分中存储了用于指示PE文件是.NET可执行文件的信息。 PE文件和.NET程序集是否相同? IL代码存储在哪里?.NET可移植可执行文件VS .NET程序集
1
A
回答
0
将组件视为“逻辑”概念。该程序集包含IL代码以及其他类型的数据:资源,元数据,版本信息等。
DLL和EXE文件是驻留在文件系统中的“物理”概念。这些文件在整个历史中都有各种格式,而PE就是其中的一种格式。
程序集通常存储在DLL或EXE中,但不必:可以将程序集发送到内存中并从内存中加载,而无需任何物理(文件系统)表现形式。
A DLL can actually contain more than one assembly,虽然这不是常见的情况。
装配进一步分为modules。模块包含类。通常在给定装配中只有一个模块。
2
我不明白你看到的区别,我会回答“是”给他们。
更具体地说,您称为PE可执行文件(典型的Windows可执行文件)包含启动.NET VM的存根控件和包含编译的汇编代码以传递给VM的部分。
2
PE是一种文件格式,包络,用于本地和.NET可执行程序,
https://en.wikipedia.org/wiki/Portable_Executable
甲.NET组件必须是PE,但是反之则不然。
相关问题
- 1. 在.NET可移植子集
- 2. .Net Framework .resx可移植性至.Net Core
- 3. 我可以混淆编译的.NET可执行文件/程序集吗?
- 4. 查看移植可执行
- 5. 可移植类库和.NET ConcurrentDictionary
- 6. 可移植类库和.NET Framework 4.6.x
- 7. .NET的Web应用程序的可移植性Silverlight的
- 8. 重命名.NET 2.0可执行文件
- 9. Quartz .NET Config可执行文件位置
- 10. 签署Windows .NET可执行文件
- 11. .NET独立可执行文件
- 12. 是否可以在.net DLL中嵌入和使用可移植的可执行文件?
- 13. 是否有可能从vbscript执行.NET程序集(dll)?
- 14. 自定义.NET可移植类库配置文件?
- 15. .NET 2.0程序集可以在.NET 4.0下运行吗?
- 16. 可移植类库被视为文件程序集引用
- 17. 如何打包以.NET Core为目标的可移植.NET库?
- 18. .NET 4.0程序集可以用于.Net 3.5应用程序吗?
- 19. .NET可移植性警告:CA1901 PInvoke的声明应该是可移植
- 20. 移植到ASP .Net
- 21. 如何为网站应用程序运行.NET可移植性分析器
- 22. 可移植性如何将可执行文件链接到可加载模块?
- 23. 从.NET 3.5移植到.NET 4.0后应用程序崩溃
- 24. 是否可以为.NET 3.5和.NET 4.5创建单个(可移植的)库?
- 25. 在WIX引导程序中嵌入.Net Framework安装程序可执行文件
- 26. 如何在运行时写入可移植可执行文件(PE)?
- 27. .NET可执行过程遍历
- 28. 使.NET程序集COM可见和VB5
- 29. .NET活动的进程可执行文件开始
- 30. 可能将资源文件注入.net程序集?
“一个DLL实际上可能包含多个程序集”似乎误导了我,而程序集可能包含dll作为嵌入式资源,我不认为这是大多数人在阅读时会想到的。该程序集由程序集清单定义,模块(dll,exe,netmodule)无法包含多个不同的程序集清单,并且该规范禁止程序集使用程序集清单拥有多个模块。 –