2016-01-20 11 views
5

Wir haben this announcement, dass. Net Core umbenannt wird in 1.0 (verwirrend, aber gut, was auch immer). Darin heißt es in HanselmanErzeugt .Net Core die gleiche IL wie Standard .Net?

It doesn't yet support VB or F#. 

Was mich dazu bringt zu denken, dass mir etwas fehlt. Meine Logik funktioniert wie folgt.

Nehmen Sie zwei einfache einfache Hello World-Apps in C#, die andere in VB. Angenommen, Sie haben es einfach gehalten, wenn Sie mit dem Standard-Msbuild/.Net-Framework kompilieren, sollten Sie identische IL erhalten. Es ist mein Verständnis, dass Sie dann .Net-Kern bekommen können, um die gleiche DLL zu betreiben, da es alles IL auf dieser Ebene ist. Warum also sagen, dass VB nicht unterstützt wird? Ist es, dass es es nicht über einfache Situationen hinaus unterstützt (wo Sie wahrscheinlich auf vb-spezifische Sachen verweisen würden)? Oder ist es, dass die tatsächliche IL, die beim Kompilieren für .Net Framework gegenüber .Net Core erzeugt wird, anders ist und es noch keinen VB/F # -Compiler gibt?

+0

wahrscheinlich, weil diese Sprachen sprachenspezifische Referenz-DLLs (zB Microsoft.VisualBasic.dll) haben, die ihre eigenen Referenzen haben, die Core nicht unterstützen. – Jeff

+0

@Jeff Nun ja, aber ich habe das in der Frage abgedeckt - Sie müssen nicht * Microsoft.VisualBasic.dll' in einer Vb-App verwenden (und Sie können es auch gut in einem C# eins verwenden). So ist es entweder, dass diese DLL nicht zu .Net Core verschoben wurde, aber die IL ist identisch und es ist nicht ganz richtig, dass vb-wont-Arbeit, oder die tatsächliche IL ist anders. Welches ist es? –

+5

Es gibt nur eine Art von IL, die .NETCore-Version unterscheidet sich nicht. Ihre Annahme, dass Microsoft.VisualBasic.dll nicht erforderlich ist, ist nicht korrekt, der Compiler generiert automatisch Code, der es verwendet. Grundlegende Dinge wie String-Vergleiche, die Option Compare beobachten müssen. Ähnliches gilt für F # und FSharp.Core.dll –

Antwort

2

Ja, es erzeugt die gleichen IL

(Ich konnte es nicht beantworten wider so einfach)

Trotzdem auf den VB-Teil: In Bezug von VB Unterstützung: Laufen auf .NET-Core erfordert einen Compiler (implementiert in Roslyn), ein CLI-Befehl dotnet-compile-vb (nicht implementiert ... für F # wurde von der Community bereits geliefert) und eine unterstützte Version von Microsoft.VisualBasic (implementiert in corefx). Ich denke, der Punkt der VisualBasic-Unterstützung ist der gleiche wie für z. ASP.NET-SignalR. Der Code ist 95% da, es läuft, aber es ist nicht offiziell getestet und unterstützt. Es ist eine Frage von Zeitlinien, nicht von Technologien.

IMHO: Wenn man bedenkt, dass die Microsoft.VisualBasic Assembly dort ist und die IL die gleiche ist, könnte es in der Theorie sogar eine kompilierte VB-Assembly ausführen, solange der Compiler die System.Runtime basierte Core-Plattform verwendet.