2016-01-20 91 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程序集。