.Net Core 是否生成与标准 .Net 相同的 IL?

Does .Net Core generate the same IL as standard .Net?

我们 this announcement .Net Core 正在重命名为 1.0(令人困惑,但很好,无论如何)。汉塞尔曼在其中指出

It doesn't yet support VB or F#.

这让我觉得我错过了什么。我的逻辑如下。

使用两个简单的简单 Hello World 应用程序,一个使用 C#,另一个使用 VB。假设您保持简单,在使用标准 MSBuild/.NET 框架进行编译时,您应该获得相同的 IL。据我了解,您可以将 .Net 核心获取到 运行 相同的 dll,因为它在那个级别都是 IL。那为什么说不支持VB呢?除了简单的情况(您可能会参考 VB-specific 的东西)之外,它是否不支持它?还是为 .Net Framework 与 .NET Core 编译时生成的实际 IL 不同并且还没有 VB/F# 编译器?

是的,它生成相同的 IL

(忍不住回答这么简单)

然而,对于 VB 部分:关于 VB 支持:运行 on .NET Core 需要一个编译器(在 Roslyn 中实现),一个 CLI 命令 dotnet-compile-vb(尚未实现...对于 F#,社区现在已交付它)和 Microsoft.VisualBasic 的受支持版本(在 corefx 中实现)。我想 VisualBasic 支持的意义与例如一样。 ASP.NET信号R。代码有 95%,可以运行,但未经官方测试和支持。这是时间问题,而不是技术问题。

恕我直言:考虑到 Microsoft.VisualBasic 程序集在那里并且 IL 是相同的,理论上它甚至可以执行编译的 VB 程序集,只要编译器使用 System.Runtime 基于核心平台。

PS 2019 年 5 月:他们刚刚宣布移植大部分 VB .NET 运行时