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

Net核心是否生成与标准.Net相同的IL?,.net,.net-core,.net,.net Core,我们知道.Net核心被重命名为1.0(令人困惑,但很好,不管怎样)。在它里面,汉斯曼说 It doesn't yet support VB or F#. 这让我觉得我错过了什么。我的逻辑如下 以两个简单的Hello World应用程序为例,一个是C#,另一个是VB。假设保持简单,使用标准msbuild/.Net framework编译时,应该得到相同的IL。我的理解是,您可以让.NETCore运行相同的dll,因为它在那个级别上都是IL。那么为什么说它不支持VB呢?除了简单的情况(您可能会引

我们知道.Net核心被重命名为1.0(令人困惑,但很好,不管怎样)。在它里面,汉斯曼说

 It doesn't yet support VB or F#.
这让我觉得我错过了什么。我的逻辑如下


以两个简单的Hello World应用程序为例,一个是C#,另一个是VB。假设保持简单,使用标准msbuild/.Net framework编译时,应该得到相同的IL。我的理解是,您可以让.NETCore运行相同的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 Signal相同。代码95%在那里运行,但没有经过正式测试和支持。这是一个时间表问题,而不是技术问题

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


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

,可能是因为这些语言具有特定于语言的引用dll(例如Microsoft.VisualBasic.dll)它们自己的引用不支持core。@Jeff是的,但我在问题中已经提到了这一点-在vb应用程序中不必使用
Microsoft.VisualBasic.dll
(在c#one中也可以很好地使用它)。因此,要么这个dll没有移动到.Net内核,但IL是相同的,vb不能工作,这并不完全正确,要么实际的IL是不同的。是哪一种?只有一种IL,.NETCore版本没有什么不同。您认为Microsoft.VisualBasic.dll不是必需的假设并不准确,编译器会自动生成使用它的代码。基本的东西,比如字符串比较,需要观察选项比较。F#和FSharp.Core.dll的情况大致相同