【问题标题】:What are the specific version numbers of the C# 4, 5 and 6 compilers and how to know which one Visual Studio is using to compile my project?C# 4、5 和 6 编译器的具体版本号是什么?如何知道 Visual Studio 使用哪一个来编译我的项目?
【发布时间】:2017-04-24 11:42:34
【问题描述】:

我知道我有 C# 6 编译器,并且我经常使用 C# 6 功能,当我编写应用程序进行练习时,我通常以 .NET v4.6 为目标。

在这台机器上,我安装了 Visual Studio 2010、2013、2015 和 2017。

当我从 .NET Framework v4 目录中键入 csc.exe 时,它显示编译器版本为 4.6.1098.0 for C# 5,这非常令人困惑。

C:\Windows\Microsoft.NET\Framework64\v4.0.30319>csc Microsoft (R) 适用于 C# 5 的 Visual C# 编译器版本 4.6.1098.0 版权所有 (C) Microsoft 公司。保留所有权利。

此编译器作为 Microsoft (R) .NET Framework 的一部分提供, 但仅支持最高 C# 5 的语言版本,这不再是 最新版本。对于支持较新版本 C# 的编译器 编程语言,见 http://go.microsoft.com/fwlink/?LinkID=533240

当我在另一台只安装了 Visual Studio 2013 的笔记本电脑上键入相同的命令时,我从 csc.exe 命令得到以下输出。

C:\Windows\Microsoft.NET\Framework64\v4.0.30319>csc Microsoft (R) 适用于 C# 5 的 Visual C# 编译器版本 4.6.1055.0 版权所有 (C) Microsoft 公司。保留所有权利。

此编译器作为 Microsoft (R) .NET Framework 的一部分提供, 但仅支持最高 C# 5 的语言版本,这不再是 最新版本。对于支持较新版本 C# 的编译器 编程语言,见 http://go.microsoft.com/fwlink/?LinkID=533240

请注意,它显示为 4.6.1055.0 for C# 5

  1. 那么,我的第一个问题是:C# 4、5 和 6 的 C# 编译器的不同版本号是什么?

  2. 其次,我如何知道 csc.exe 文件的哪个版本,以及我的 Visual Studio 安装使用哪个版本的 C# 编译器来编译我的文件?为了自己尝试这个,我在两台机器上分别创建了一个控制台应用程序并追踪项目文件。他们都有一个 MS Build Import 指令,用于 MS Build bin 文件夹中的 Microsoft.Csharp.targets 文件。但我放弃了从该文件中读取,因为我仍然不完全理解所有 MS Build 标记。

【问题讨论】:

  • 不确定这里的问题是什么。 C# 5 显然使用了 4.6 版的编译器。混乱从何而来?另一个数字(“1098”)只是一个次要修订/内部版本号;据推测,对 C# 编译器进行了多次修订。您尝试的第一个系统有一个稍新的版本,可能是一两个错误修复。它们都是 C# 5。此外,编译器向后兼容,这意味着 C# 5 编译器可以针对旧版本的 C#。您可以使用项目选项和/或编译器开关对其进行配置。
  • @CodyGray 你可能是对的。我问的原因是:在 VS 2013 机器上,CallerMemberAttribute 等 C# 5 功能不起作用。我想知道使用哪个版本的 C# 编译器 VS 2013 来编译我的代码。
  • 但是,它确实可以识别关键字 asyncawait,我相信它们是在 C# 5 中引入的。

标签: c# .net visual-studio msbuild


【解决方案1】:

C# 4、5 和 6 的 C# 编译器的不同版本号是什么?

由于最新的 C# 版本here,Visual Studio 2010 和 Visual Studio 2013 都使用 C# 4 和 5 编译器,正如 Cody Gray 所说,编译器是向后兼容的,这意味着 C# 5编译器可以针对旧版本的 C#。 所以它们都是 C# 5。此外,starting with Visual Studio 2013、MSBuild 和 C# 编译器现在可以作为独立包 Microsoft® Build Tools 使用。这个包是随Visual Studio 2013一起安装的。然后你可以从路径中获取C#6的版本号:C:\Program Files (x86)\Microsoft Visual Studio 14.0

我如何知道我的 Visual Studio 安装使用哪个版本的 csc.exe 文件以及 C# 编译器的哪个版本来编译我的文件?

MSBuild 文件夹中的 csc.exe 文件是 MSBuild 内部使用的。可以从路径获取C#编译器版本:C:\Program Files (x86)\Microsoft Visual Studio 14.0\csc.exe

【讨论】:

  • C# 编译器不是 always 作为独立包提供的吗?最初,它随 .NET Framework 一起提供。我不确定这是否仍然正确,因为在过去的几个版本中,我主要是避免使用 .NET。
  • 是的,C# 编译器作为独立包提供,并在 Visual Studio 2013 之前随 .net 框架提供,从 VS2013 开始,C# 编译器随 Visual Studio 提供。
猜你喜欢
  • 2014-06-07
  • 1970-01-01
  • 1970-01-01
  • 2010-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多