278

我想知道我使用的是哪个版本的 C#。如果我要使用 python,我会python -V从命令行执行类似的操作,或者键入:

import sys
print sys.version

在 PHP 中我会做这样的事情:phpinfo();在 java 中:java -version

但我无法找到如何在 C# 中实现这一点。

这个问题没有回答它,虽然名字暗示它应该回答。

我知道它依赖于 .NET 框架,但是有没有一种编程方式来确定我的框架?我的意思是不去目录并检查我的 .NET 文件夹的名称。

4

19 回答 19

321

这取决于.NET Framework您使用的。检查Jon Skeet关于版本的回答。

这是他的答案的简短版本。

C# 1.0.NET 1.0一起发布

C# 1.2(很奇怪);与.NET 1.1一起发布

C# 2.0.NET 2.0一起发布

C# 3.0.NET 3.5一起发布

C# 4.0.NET 4一起发布

C# 5.0.NET 4.5一起发布

C# 6.0.NET 4.6一起发布

C# 7.0.NET 4.6.2一起发布

C# 7.3.NET 4.7.2一起发布

C# 8.0NET Core 3.0一起发布

C# 9.0NET 5.0一起发布

NET 6.0发布的C# 10.0

于 2013-10-23T04:46:18.797 回答
110

虽然这不是直接回答你的问题,但我把它放在这里是因为当我在寻找这个信息时,谷歌首先在我的搜索中提出了这个页面。

如果您使用的是Visual Studio,您可以右键单击的项目 -> 属性 -> 构建 -> 高级 这应该列出可用版本以及您的项目正在使用的版本。

在此处输入图像描述

于 2017-11-03T09:29:11.930 回答
88

要获取框架版本 - 查看主要程序集之一的版本,即

 Console.Write(typeof(string).Assembly.ImageRuntimeVersion);

获取 C# 编译器的版本有点困难,但您应该能够通过检查使用的框架版本来猜测版本。

如果您使用的是命令行编译器(csc.exe),您可以查看帮助以查看版本(无论如何您也需要知道框架版本:

C:\Windows\Microsoft.NET\Framework\v4.0.30319>csc /?
Microsoft (R) Visual C# 2010 Compiler version 4.0.30319.1
于 2013-10-23T05:23:10.447 回答
24

从开发人员命令提示符类型

csc -langversion:?

这将显示所有支持的 C# 版本,包括默认版本:

1
2
3
4
5
6
7.0 (default)
7.1
7.2
7.3 (latest)
于 2019-01-28T16:02:34.943 回答
19

上面的大部分答案都是正确的。只需合并 3 个,我发现它既简单又超级快速。现在在 VS2019 中,#1 也是不可能的。

  1. Visual Studio:Project > Properties > Build > Advanced
    这个选项现在被禁用了,默认语言由VS自己决定。详细原因可在此处找到

  2. 在任何地方的代码(.cs)中键入“#error version”,将鼠标悬停在它上面。

  3. 转到“Visual Studio 的开发人员命令提示符”并运行以下命令。 csc -langversion:?

阅读更多提示:这里

于 2020-09-12T23:44:24.103 回答
15

查找 C# 版本的有用提示:

要了解您当前使用的语言版本,请将#error version(区分大小写)放入您的代码中。这使编译器生成诊断信息 CS8304,其中包含正在使用的编译器版本和当前选择的语言版本的消息。

来自MS 文档中的C# 语言版本控制。

您可以#error version在代码中的任何位置放置。它会产生错误,因此您需要在使用后将其删除。该错误提供了编译器和语言版本的详细信息,例如:

Error   CS8304  Compiler version: '3.7.0-6.20459.4 (7ee7c540)'. Language version: 8.0.

至少在 VS 2019 中,您无需编译代码#error version即可为您提供版本号。只需在代码中将鼠标悬停在它上面,就会显示与编译代码时相同的错误详细信息。

于 2020-10-24T00:21:34.767 回答
8

您使用的 C# 版本完全取决于您使用的 .Net 版本。

如果您使用 Visual Studio 进行开发,您可以选择 .net 框架版本,与之相关的 c# 版本相应地提供

这些是已知的 C# 版本:

  • C# 1.0.NET 1.0和 VS2002 一起发布(2002 年 1 月)
  • C# 1.2(很奇怪);与 .NET 1.1 和 VS2003(2003 年 4 月)一起发布。第一个调用 s 的版本Dispose实现IEnumeratorIDisposable. 其他一些小功能。
  • C# 2.0.NET 2.0和 VS2005 一起发布(2005 年 11 月)。主要新特性:泛型、匿名方法、可空类型、迭代器块
  • C# 3.0.NET 3.5和 VS2008(2007 年 11 月)一起发布。主要新特性:lambda 表达式、扩展方法、表达式树、匿名类型、隐式类型 ( var)、查询表达式
  • C# 4.0.NET 4和 VS2010(2010 年 4 月)一起发布。主要新特性:后期绑定 ( dynamic)、委托和接口泛型变化、更多 COM 支持、命名参数和可选参数
  • C# 5.0于2012 年 8 月与.NET 4.5一起发布。

参考 Jon Skeet 的 C# 版本答案

于 2013-10-23T04:47:24.310 回答
8

.NET 版本通过注册表

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\ 探索孩子并查看每个版本。带有“完整”键的那个是系统上的版本。

https://support.microsoft.com/en-us/kb/318785 https://msdn.microsoft.com/en-us/library/hh925568(v=vs.110).aspx

通过 Visual Studio 的 .NET 版本

帮助 -> 关于 Microsoft Visual Studio -> .NET 版本在右上角指定。

据我所知,Visual Studio 使用操作系统中的 .NET Framework。

可以使用项目属性 -> 应用程序 -> 目标框架修改 Visual Studio 中项目的目标 .NET Framework 版本

通过dll

如果您知道 .NET Framework 目录,例如 C:\Windows\Microsoft.NET\Framework64\v4.0.30319

打开System.dll,右键->属性->详细信息选项卡

C#版本

帮助 -> 关于 Microsoft Visual Studio

在已安装的产品列表中有 Visual C#。就我而言,Visual C# 2015

Visual Studio (Microsoft) 按名称 Visual C# 发布 C#。

https://msdn.microsoft.com/en-us/library/hh156499.aspx

C# 6,Visual Studio .NET 2015 当前版本,见下文

于 2016-12-20T13:42:18.950 回答
8

如果您使用的是 VS2015,请按照以下步骤找出相同的内容:

  1. 右键单击项目。
  2. 单击属性选项卡。
  3. 从属性窗口中选择构建选项。
  4. 在那个点击高级按钮。
  5. 在那里你会找到语言版本。

下图显示了相同的步骤:

步骤1:

步骤1

第2步:

第2步

于 2019-04-23T08:04:29.620 回答
8

感谢@fortesl 和这个答案

我正在使用 VS 2019,它不会轻易告诉您您正在使用的 C# 版本。我正在使用 .Net Core 3.0 和 VS 2019,在该环境中使用 C# 8。但是“csc -langversion:?” 清楚地说明了这一点:

D:\>csc -langversion:?
Supported language versions:
default
1
2
3
4
5
6
7.0
7.1
7.2
7.3
8.0 (default)
latestmajor
preview
latest

不确定 csc -version 正在识别什么:

D:\>csc --version
Microsoft (R) Visual C# Compiler version 3.4.0-beta1-19462-14 (2f21c63b)
Copyright (C) Microsoft Corporation. All rights reserved.
于 2019-09-24T07:52:57.537 回答
6

默认情况下,以下是 Visual Studio 对应的 C# 编译器版本:

  1. Visual Studio 2015:C# 6.0
  2. Visual Studio 2013:C# 5.0
  3. Visual Studio 2012:C# 5.0
  4. Visual Studio 2010:C# 4.0
  5. Visual Studio 2008:C# 3.0
  6. Visual Studio 2005:C# 2.0
  7. Visual Studio.NET 2003:C# 1.2
  8. Visual Studio.NET 2002:C# 1.0

您也可以修改版本,请按照以下步骤操作。

打开项目属性窗口:

step 1. Right click on the Project Name
step 2. Select "Properties" (last option in menu)
step 3. Select "Build" from left hand side options and scroll till down
step 4. click on "Advance" button.
step 5. It will open a popup and there you will get "Language Version" dropdown
step 6. Select desired version of C# and Click "OK"
于 2018-04-04T09:12:57.570 回答
5

当前的答案已经过时。您应该可以使用#error version(在项目中任何 C# 文件的顶部,或代码中几乎任何地方)。编译器对此进行了特殊处理,并报告编译器错误 CS8304,指示语言版本以及编译器版本。CS8304 的消息如下所示:

错误 CS8304:编译器版本:“3.7.0-3.20312.3 (ec484126)”。语言版本:6。

于 2020-08-24T07:54:54.287 回答
4

默认根据项目的目标框架选择语言版本。

每个项目可能使用不同版本的 .Net 框架,默认情况下将通过查看目标框架来选择最合适的 C# 编译器。在 Visual Studio 中,UI 不允许用户更改语言版本,但是,我们可以通过编辑项目文件并添加新的属性组来更改语言版本。但这可能会导致现有代码出现编译/运行时问题。

<PropertyGroup>  
<LangVersion>8.0</LangVersion>  
</PropertyGroup>

我可以从 Microsoft 文档中看到以下内容。

编译器根据以下规则确定默认值:

Target framework  version     C# language version default
.NET Core           3.x         C# 8.0
.NET Core           2.x         C# 7.3
.NET Standard       2.1         C# 8.0
.NET Standard       2.0         C# 7.3
.NET Standard       1.x         C# 7.3
.NET Framework      all         C# 7.3
于 2020-03-14T10:29:50.140 回答
3

为了查看已安装的 VC# 编译器版本:

打开 Visual Studio 命令提示符,只需键入 csc,然后按 Enter。

您将看到如下内容:

Microsoft (R) Visual C# 编译器版本 4.0.30319.34209

适用于 Microsoft (R) .NET Framework 4.5

版权所有 (C) 微软公司。版权所有。

PS:“ CSC ”代表“ C Sharp Compiler ”。实际上使用这个命令你运行 csc.exe,它是一个位于“c:\Windows\Microsoft.NET\Framework\vX.X.XXX”的可执行文件。有关 CSC 的更多信息,请访问http://www.file.net/process/csc.exe.html

于 2016-03-17T22:47:45.173 回答
3

对于 Windows,您在命令/搜索程序行运行 dev 并选择 Developer Command Prompt for VS。然后你就跑

csc

现在你得到类似的信息

Microsoft (R) Visual C# Compiler version 2.6.0.62329 (5429b35d)
Copyright (C) Microsoft Corporation. All rights reserved.   

对于 Windows,如果您从 cmd 终端开始

cd C:\Windows\Microsoft.NET\Framework\
dir

现在您可以看到 .NET\Framework\ 中的所有目录和文件,请选择 v... latest 并转到那里,例如,

cd v4.0.30319

csc

您将看到有关 C# 编译器版本的信息,可能类似于

Microsoft (R) Visual C# Compiler version 4.7.2556.0
for C# 5
Copyright (C) Microsoft Corporation. All rights reserved.
于 2018-04-28T16:22:57.127 回答
2

在 Visual Studio 2022 中,我们可以在高级选项卡中的构建中检查项目属性

如何在 Visual Studio 2022 中检查 c# 版本的屏幕截图

于 2021-11-16T05:51:12.557 回答
1

下面概述了 .NET 框架和编译器版本是如何关联、设置和修改的。每个项目都有一个目标 .NET 框架版本,例如版本 3.x 或 2.x 。.NET 框架包含运行时类型和组件。

Visual Studio 版本安装和 .NET 框架版本决定了兼容的 c# 语言版本和可以使用的编译器选项。Visual Studio 项目中使用的默认 c# 版本和选项是与正在使用的 .NET 框架版本兼容的最新安装语言版本。

在 Visual Studio 2011 中查看或更新项目中的框架或 C# 语言:

  • 右键单击解决方案资源管理器中的项目并选择属性
  • 在左侧导航窗格中选择“应用程序”。在 Target framework: 下是 .NET framework 版本。选择向下箭头以查看所有可用的框架版本。

  • 在左侧导航窗格中选择“构建”。在“语言版本:”旁边窗格的“常规”部分中,是正在使用的 c# 编译器语言版本,例如“默认”或 c# 5.0

  • 选择“语言版本:”下拉菜单中的向下箭头以查看所有可用的语言版本。如果“默认”是正在使用的 c# 版本,则将使用最新的兼容 c# 语言版本。

要查看“默认”的确切编译器语言版本,请在开发人员命令提示符中输入以下内容以获取已安装的 Visual Studio 版本。例如,从 Windows 开始图标中选择图标:“VS2011 的开发人员命令提示符”并输入:

csc -langversion:默认

适用于 c# 5 的 Microsoft (R) Visual C# 编译器版本 4.7.3062.0

于 2019-10-23T17:35:48.160 回答
1

在 Visual Studio 中,当构建详细程度设置为“正常”或更高(默认为“最小”)时,通过查看构建输出来查看 C# 语言版本。

  1. 将构建输出的详细程度调整为“正常”、“详细”或“诊断”。(其他两个值,“安静”和“最小”不显示语言版本。)要设置构建输出详细程度,请选择菜单工具 | 选项...,然后在“选项”对话框中,选择“项目和解决方案”| “构建并运行”。查找标签“MSBuild 项目输出详细程度”。设置为上面给出的三个值之一。

要查看正在使用的 C# 语言版本,请设置构建输出详细程度。

  1. 构建(如果您的构建是最新的,请使用菜单选择 Build | Rebuild 强制构建。)

  2. 打开输出窗口菜单选择视图| 输出。

  3. 在输出窗口中,为标记为“显示输出来自:”的项目设置“构建”

  4. 搜索“语言版本”。在一个非常非常长的行(我的机器上刚刚有 1578 个字符)中间寻找一个像这样的开关:/langversion:9.0

(要在“输出”窗口中搜索,请单击“输出”窗口,然后使用键盘快捷键 Ctrl+F 来召唤搜索窗格。)

这是一个显示我当前项目的 C# 语言版本的示例。

于 2022-01-15T23:53:07.317 回答
0

要从代码中获取 C# 版本,请使用Microsoft 文档中的此代码来获取 .NET Framework 版本,然后使用其他人提到的表格进行匹配。您可以将框架编码到字典中的 C# 版本映射或其他东西以实际让您的函数返回 C# 版本。如果您有 .NET Framework >= 4.5,则可以使用。

using System;
using Microsoft.Win32;

public class GetDotNetVersion
{
   public static void Main()
   {
      Get45PlusFromRegistry();
   }

   private static void Get45PlusFromRegistry()
   {
      const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\";

      using (var ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey))
      {
        if (ndpKey != null && ndpKey.GetValue("Release") != null) {
            Console.WriteLine($".NET Framework Version: {CheckFor45PlusVersion((int) ndpKey.GetValue("Release"))}");
        }
         else {
            Console.WriteLine(".NET Framework Version 4.5 or later is not detected.");
         } 
      }

      // Checking the version using >= enables forward compatibility.
      string CheckFor45PlusVersion(int releaseKey)
      {
         if (releaseKey >= 528040)
            return "4.8 or later";
         if (releaseKey >= 461808)
            return "4.7.2";
         if (releaseKey >= 461308)
            return "4.7.1";
         if (releaseKey >= 460798)
            return "4.7";
         if (releaseKey >= 394802)
            return "4.6.2";
         if (releaseKey >= 394254)
            return "4.6.1";      
         if (releaseKey >= 393295)
            return "4.6";      
         if (releaseKey >= 379893)
            return "4.5.2";      
         if (releaseKey >= 378675)
            return "4.5.1";      
         if (releaseKey >= 378389)
            return "4.5";      
         // This code should never execute. A non-null release key should mean
         // that 4.5 or later is installed.
         return "No 4.5 or later version detected";
      }
   }
}   
// This example displays output like the following:
//       .NET Framework Version: 4.6.1
于 2020-03-04T01:15:49.950 回答