.net MSIL文件是否完全跨平台?
可能相关的问题:.net MSIL文件是否完全跨平台?,.net,vb.net,.net,Vb.net,可能相关的问题: );我不相信这完全回答了我的问题,但它确实回答了我的另一个稍微相关的问题 我来自跨平台语言的国度。我对Python非常在行,对Java非常在行,但效率很高。我知道.pyc文件或多或少会在运行相同版本Python的任何系统上运行,而.jar文件或多或少会在运行Java的任何机器上运行(不包括文字烤面包机)。我想知道.msil文件在.NET环境中是否也能同样工作 因此,为了充分推断我的问题: 虽然x86是目前占主导地位的体系结构,但也有运行在ARM上的Windows机器编译
- );我不相信这完全回答了我的问题,但它确实回答了我的另一个稍微相关的问题
一般来说,将代码交付以后编译还是提前编译目标平台更好 这完全取决于您的工具支持和您正在尝试开发的内容。从历史上看,C#和VB.NET只能编译为MSIL。微软没有制造一个将C#编译成本机代码的编译器。Xamarin专门为ARM iOS设备提供此功能。据我所知,除了iOS,您无法在任何平台上进行AoT编译。从理论上讲,JIT编译有一些显著的优势。例如,Intel Core 2 Duo处理器与第四代i7处理器之间存在许多差异。i7有很多Core2Duo没有的指令集和功能。然后,JIT可以生成非常优化的CPU指令,即使它们是相同的体系结构,也无法移植到其他CPU
然而,Windows应用商店应用程序是另一回事。虽然它们可以在C#和VB.NET中开发,但用户可以使用最近发布的.NET本机从为其体系结构预编译的商店下载它们。这非常有用,但我想问一点更多的信息:一般来说,将代码交付以后编译,还是提前为目标平台编译更好?我这样问是因为,在我看来,我觉得ARM设备上的JIT能够更好地处理一些极端情况,例如(这太简单了,我几乎不知道我在说什么)ARM芯片需要一个特定的命令,但Xamarin不知道如何编译该部分,导致可能已通过JIT编译器解决的错误。这有意义吗?如果没有,我可以重写。