为什么在Visual Studio 2010中安装了F#Runtime?

Rod*_*ama 4 .net f# cil

我正在新计算机上安装Visual Studio 2010并列出了已安装的默认组件.

其中有"Visual Studio F#2.0 Runtime",这看起来很奇怪,因为据我所知,所有.NET语言都被编译成MSIL然后被平等对待(这显然不对,因为有一个F#Runtime ).

所以我的问题出现了:是不是所有语言都编译成MSIL?如果是这种情况,那就意味着Runtime分析器对于任何语言应该是相同的,不是吗?为什么F#的处理方式与其他语言不同,如果确实如此呢?

任何想法将不胜感激!

Bri*_*ian 14

C#和VB也有运行时.它们只是DLL ... .NET MSIL程序集.恰好F#运行时不是 .NET框架的一部分(它是一个单独的组件),而C#和VB运行时是框架的一部分(因此已经作为.NET的一部分安装).

(我不知道VB运行时到底是什么,我认为是一堆特定于VB的函数.我认为C#运行时,Microsoft.CSharp.dll只是用于dynamic.F#运行时,FSharp.Core.dll ,有各种各样的东西,比如函数,列表,异步,所有不属于.NET的F#东西.

将这些东西称为"运行时"可能是一个混乱的来源,它们只是"库",但如果没有这些库,您将被限制为仅使用该语言的一个子集.在C#中,没有运行时,您无法使用动态.在F#中,没有运行时,你可以做的很少,可能定义一些类和简单的方法,但没有使用列表或高阶函数或某些语言结构.关于VB的Dunno ...我想一般来说,如果语言的编译器会生成假定库存在的代码,那么库应该被标记为"语言运行库"的一部分.所以像mscorlib.dll这样的.NET东西可能被正确地称为所有语言的共享运行时的一部分(例如,支持像intC#中的关键字,而其他库只是支持特定语言的特定功能(如支持Microsoft.CSharp.dll dynamic).)

除了琐事之外,Visual Studio还会安装F#Runtime,因为Visual Studio中F#IDE集成的部分内容是用F#编写的,因此VS需要运行F#.(F#项目系统部分用C#编写,部分用F#编写,部分用VB编写.)同样,VS安装.NET 4.0,因为很多 VS组件都是用C#和VB编写的 - 有很多托管代码在运行里面VS.