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

时间:2016-01-20 17:45:00

标签: .net .net-core

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

 It doesn't yet support VB or F#.

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

在C#中使用两个简单的简单Hello World应用程序,在VB中使用另一个。假设你保持简单,在使用标准的msbuild / .Net框架进行编译时,你应该得到相同的IL。我的理解是,你可以让.Net核心运行相同的dll,因为它是该级别的所有IL。那么为什么说它不支持VB呢?是否它不支持它超出简单的情况(你可能会参考vb特定的东西)?或者,编译.Net Framework与.Net Core时生成的实际IL是不同的,并且还没有VB / F#编译器呢?

1 个答案:

答案 0 :(得分:3)

是的,它生成相同的IL

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

然而,对于VB部分:关于VB支持:在.NET Core上运行需要一个编译器(在Roslyn中实现),一个CLI命令dotnet-compile-vb(未实现...对于F#,社区提供了它到现在为止)和Microsoft.VisualBasic的受支持版本(在corefx中实现)。我想VisualBasic支持的意义与例如ASP.NET SignalR。代码是95%,它运行,但它没有正式测试和支持。时间问题不是技术问题。

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

PS 2019年5月:他们刚刚宣布推出大部分VB .NET Runtime