.NET Framework/Core SDK 包含多少个编译器?
How many compilers .NET Framework/Core SDK does contain?
我已经阅读了很多关于.NET SDK 和.NET Runtime 之间区别的文章,但我仍然不明白.NET SDK 的哪些部分包含编译器。我知道 .NET SDK 包含:
- CLR(带有 JIT 编译器)
- Class 个库(BCL、FLC 等)
- 文档
- 头文件
- 编译器(csc.exe、vbc.exe)
- ???
但是.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.exe
或 csc.dll
用于 C#,基于 Roslyn。
vbc.exe
或 vbc.dll
for VB.NET,基于 Roslyn。
fsc.exe
或 fsc.dll
F#。
我不知道 .NET SDK 何时包含 F# 编译器 in-box,但它不是 .NET Framework 4.x 的一部分SDK.
我注意到 .NET Framework 4.x 的正常 runtime-only 安装仍然包括 csc.exe
、vbc.exe
和 jsc.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
.
我已经阅读了很多关于.NET SDK 和.NET Runtime 之间区别的文章,但我仍然不明白.NET SDK 的哪些部分包含编译器。我知道 .NET SDK 包含:
- CLR(带有 JIT 编译器)
- Class 个库(BCL、FLC 等)
- 文档
- 头文件
- 编译器(csc.exe、vbc.exe)
- ???
但是.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.exe
或csc.dll
用于 C#,基于 Roslyn。vbc.exe
或vbc.dll
for VB.NET,基于 Roslyn。fsc.exe
或fsc.dll
F#。
我不知道 .NET SDK 何时包含 F# 编译器 in-box,但它不是 .NET Framework 4.x 的一部分SDK.
我注意到 .NET Framework 4.x 的正常 runtime-only 安装仍然包括 csc.exe
、vbc.exe
和 jsc.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
.