2016-01-20 94 views
5

我们有this announcement .Net核心正在重命名为1.0(困惑,但罚款,无论)。其中Hanselman国.Net Core是否会生成与标准.Net相同的IL?

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#编译器?

+0

可能是因为这些语言具有特定于语言的引用dll(例如Microsoft.VisualBasic.dll),它们具有不支持核心的自己的引用。 – Jeff

+0

@Jeff好耶,但我在这个问题中提到过 - 你不必*在vb应用程序中使用'Microsoft.VisualBasic.dll'(并且你也可以在c#中使用它)。所以它或者是这个DLL没有被移动到.Net核心,但是IL是相同的,它并不完全正确,vb-wont-work,或者实际的IL是不同的。这是什么? –

+5

只有一种IL,.NETCore版本没有区别。假设Microsoft.VisualBasic.dll不是必需的并不准确,编译器会自动生成使用它的代码。基本的东西,比如需要观察选项比较的字符串比较。对于F#和FSharp.Core.dll也是如此 –

回答

2

是的,它产生相同的IL

(我无法抗拒回答这么简单)

然而,在VB部分:在VB支持方面:运行在.NET核心需要一个编译器(在Roslyn中实现),一个CLI命令dotnet-compile-vb(未实现...,F#社区现在交付它)和受支持版本的Microsoft.VisualBasic(在corefx中实现)。我想VisualBasic支持点与例如ASP.NET SignalR。代码是95%,它运行,但它没有正式测试和支持。这是时间问题而不是技术问题。恕我直言:考虑到Microsoft.VisualBasic程序集在那里,并且IL是相同的,只要编译器使用基于System.Runtime的Core平台,理论上甚至可以执行编译的VB程序集。