.NET Framework/Core SDK 包含多少个编译器?

How many compilers .NET Framework/Core SDK does contain?

我已经阅读了很多关于.NET SDK 和.NET Runtime 之间区别的文章,但我仍然不明白.NET SDK 的哪些部分包含编译器。我知道 .NET SDK 包含:

但是.NET 是多语言平台。有两种以上的语言(C#、VisualBasic)。所以我的问题是我在安装 .NET SDK 时得到了多少个编译器?

But .NET is multi-language platform. There are more than two languages (C#, VisualBasic). So my question is how many compilers I get when I install .NET SDK?

如果您询问的是最近发布的 .NET 6、.NET 5 和 .NET Core 3.1 SDK 正式支持的不同“顶级”applications-programming 语言,那么答案是 3 :

  • csc.execsc.dll 用于 C#,基于 Roslyn。
  • vbc.exevbc.dll for VB.NET,基于 Roslyn。
  • fsc.exefsc.dll F#。

我不知道 .NET SDK 何时包含 F# 编译器 in-box,但它不是 .NET Framework 4.x 的一部分SDK.

我注意到 .NET Framework 4.x 的正常 runtime-only 安装仍然包括 csc.exevbc.exejsc.exe

我通过查看原始的 .NET Framework 1.0、1.1 和 SDK 以及 (non-SDK) 运行时安装程序做了一些软件考古,并且我编译了这个table:

Language Compiler .NET FX 1.0 .NET FX 1.1 .NET FX 2.0 .NET FX 3.0 .NET FX 4.x .NET Core 1.0 .NET Core 2.x .NET Core 3.x .NET 5 .NET 6
C# csc.exe Runtime + SDK Runtime Runtime Runtime Runtime csc.dll csc.dll csc.dll
VB.NET vbc.exe Runtime + SDK Runtime Runtime Runtime Runtime vbc.dll vbc.dll vbc.dll
JScript.NET jsc.exe Runtime + SDK Runtime Runtime Runtime Runtime
C++ for CLR cl.exe SDK SDK SDK (Windows SDK) (Windows SDK)
J# vjc.exe SDK (Only in CD/ISO releases)
F# fsc.exe SDK fsc.dll fsc.dll

因此,如果您想要 .NET SDK 中的“最多”编译器,请选择 .NET Framework 1.1,因为它提供了 5 个编译器。

没有 .NET Framework 3.0、3.5 或 4.0 SDK,因为它是 rolled-into 主要 Windows SDK。

我没有 .NET Core 1.0 SDK 和 2.0 SDK 的规范数据。

自 .NET Core 3.x 以来,编译器旨在通过 dotnet 而不是通过 csc.exe 调用,因此将 csc.exe 重命名为 csc.dll.