不管您使用哪个编译器编译.NET语言,结果都是一个托管模块。托管模块是要求CLR执行的标准Windows可移植可执行(PE)文件。“在将来,其他操作系统也可能使用PE文件格式”。
是否有其他人开始支持PE文件的使用,或者将来至少有机会支持它?除了.NET之外,还有其他框架(J2EE等)会产生PE吗?体育的对应方是什么?
发布于 2012-02-23 08:13:59
Notes
如果您真的想知道除了Windows支持.NET/托管可执行文件之外的其他哪些平台,那么在询问PE格式时,您的问题有点过于宽泛或有点误导。
PE文件格式基本上就是,一种文件格式。目前,它正被用于两个主要目的:
下面的列表包括这两种用法的示例。更具体地说,只有Mono像上面第二种情况那样使用它(而不是在第一种情况下)。所有其他人都在上述第一种情况下使用它(而不是在第二种情况下)。
为什么微软为.NET选择PE文件格式?可能是因为他们拥有所有的基础设施(装载等)例如,使用.NET (在.NET上),不需要使用某种加载程序命令来启动应用程序,比如java.exe -jar ...或python.exe ...,但是可以启动和启动它,因为它是一个本地可执行文件。
经过过度简化,.NET PE文件只包含对mscoree.dll的一个引用,该引用将作为托管应用程序加载和执行包含的mscoree.dll代码。
使用
ReactOS还应该使用PE格式(而不仅仅是.NET程序集的容器),因为它应该是与Microsoft (NT)兼容的二进制文件。
更新
实际上,当你谷歌"pe文件格式“时,出现的第一个链接是这篇关于PE格式的维基百科文章。它有一个关于文件格式的用法的部分,其中基本上包含以下内容:
并不是真正意义上的真正的操作系统,但是:
mono命令启动应用程序。因此,您可能会争辩说,在这种情况下,支持PE格式的并不是真正的OS (就像它不支持PHP脚本之类的东西一样)。但这确实是一个有争议的、可能是不相干的观点。
请注意,OS/2 (2.x及更高版本)不使用PE,尽管历史上它可能使用PE(考虑到它和NT的共同历史)。它使用线性可执行文件格式。
发布于 2012-02-23 08:26:06
微软的.NET是关于Windows的,而不是跨平台的。Mono是CLR标准的跨平台实现,它可以在它支持的操作系统(Windows、OS等)上执行.NET程序集( PE格式)。
Mono编译器(C#/VB.NET)也会发出PE格式的程序集,以便与微软的.NET兼容。
体育同行太多了。Java使用JAR。Android使用APK。
https://stackoverflow.com/questions/9409023
复制相似问题