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



我们宣布.Net Core将重命名为1.0(令人困惑,但很好,无论如何)。汉塞尔曼在其中说

它还不支持 VB 或 F#。

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

假设你保持简单,当使用标准MSBuild/.NET框架进行编译时,你应该得到相同的IL。我的理解是,然后您可以让 .Net 核心运行相同的 dll,因为它在该级别都是 IL。那么为什么说它不支持VB呢?是不是除了简单情况(您可能会引用特定于 VB 的东西)之外它不支持它?还是在编译 .Net Framework 和 .NET Core 时生成的实际 IL 不同,并且还没有 VB/F# 编译器?

是的,它生成相同的IL

(我忍不住这么简单回答)

尽管如此,对于VB部分:关于VB支持:在.NET Core上运行需要一个编译器(在Roslyn中实现),一个CLI命令dotnet-compile-vb(未实现...对于 F#,社区现在已经交付了它)和受支持的 Microsoft.VisualBasic 版本(在 corefx 中实现)。我想VisualBasic支持的重点与例如 ASP.NET SignalR相同。代码在那里有 95%,它可以运行,但它没有得到官方测试和支持。这是一个时间表问题,而不是技术问题。

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

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

最新更新