C # и VB также имеют время выполнения.Они просто библиотеки DLL. NET MSIL.Просто бывает, что среда выполнения F # , а не является частью платформы .NET (это отдельный компонент), тогда как среды выполнения C # и VB являются частью инфраструктуры (и, таким образом, уже установлены как часть.NET).
(Я не знаю точно, что находится во время выполнения VB, я думаю, что набор специфичных для VB функций. Среда выполнения C #, Microsoft.CSharp.dll, просто используется для dynamic
,Я думаю, что среда выполнения F #, FSharp.Core.dll, содержит всевозможные вещи, такие как функции, списки, асинхронные, все вещи F #, которые не являются частью собственно .NET.
Вызов этих сред выполненияЭто может быть источником путаницы, они просто «библиотеки», но без этих библиотек вы будете ограничены использованием только подмножества языка. В C # без времени выполнения вы не можете использовать динамический. В F #без времени выполнения вы можете сделать очень мало, возможно, определить некоторые классы и простые методы, но ничего, используя списки, функции высшего порядка или определенные языковые конструкции. Не знаю о VB ... Я думаю, в общем,библиотека должна быть помечена как часть «среды выполнения языка», если компилятор языка сгенерирует код, который предполагает, что библиотека существует.Таким образом, материал .NET, такой как mscorlib.dll, вероятно, можно правильно назвать частью общей среды выполнения всех языков (например, для поддержки таких вещей, как ключевое слово int
в C #), тогда как другие библиотеки просто существуют для поддержки определенной функции определенногоязык (например, Microsoft.CSharp.dll для поддержки dynamic
).)
Помимо всего прочего, Visual Studio устанавливает среду выполнения F #, поскольку части интеграции F # IDE в Visual Studio написаны на F #, и, следовательно,VS нуждается в F # для запуска.(Система проектов F # частично написана на C #, частично на F # и частично на VB.) Аналогичным образом VS устанавливает .NET 4.0, потому что много компонентов VS написаны на C # и VB - естьвнутри VS работает много управляемого кода.