繁体   English   中英

为什么在 Visual Studio 2010 中安装了 F# 运行时?

[英]Why is there an F# Runtime being installed with Visual Studio 2010?

我正在一台新机器上安装 Visual Studio 2010,并列出了安装的默认组件。

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

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

任何想法将不胜感激!

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。 我想一般来说,如果语言的编译器将生成假定该库存在的代码,那么该库应该被标记为“语言运行时”的一部分。 因此,像 mscorlib.dll 这样的 .NET 东西可能可以被正确地称为所有语言的共享运行时的一部分(例如,支持 C# 中的int关键字之类的东西),而其他库只是为了支持特定语言的特定功能(像 Microsoft.CSharp.dll 支持dynamic )。

顺便说一句,Visual Studio 安装了 F# 运行时,因为 Visual Studio 中的部分 F# IDE 集成是用 F# 编写的,因此 VS 需要 F# 才能运行。 (F#项目系统部分用C#编写,部分用F#编写,部分用VB编写。)同样,VS安装.NET 4.0,因为VS的很多组件都是用C#和VB编写的——有很多托管代码在运行内VS。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM