簡體   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