ChatGPT解决这个技术问题 Extra ChatGPT

我使用的是哪个版本的 C#

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

import sys
print sys.version

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

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

This question 没有回答它,尽管顾名思义它应该回答。

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


J
Joel Christophel

这取决于您使用的 .NET Framework。检查 Jon Skeet's answer 关于版本。

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

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.0 与 NET Core 3.0 一起发布 C# 9.0 与 NET 5.0 一起发布 C# 10.0 与 NET 6.0 一起发布


M
Morse

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

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

https://i.stack.imgur.com/a9dUd.png


这是灰色的。
F
Facundo La Rocca

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

 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

很奇怪,我正在使用 .net 5 进行项目并获得 v4.0.30319 版本的程序集。
R
RAMM-HDR

从开发人员命令提示符(Visual Studio > View > Terminal)输入:

csc -langversion:?

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

1
2
3
4
5
6
7.0 (default)
7.1
7.2
7.3 (latest)

S
Simon Tewsi

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

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

来自 MS 文档中的 C# language versioning

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

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

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


S
San

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

Visual Studio:Project > Properties > Build > Advanced 这个选项现在被禁用了,默认语言由VS自己决定。详细原因可在此处获得。在任何地方的代码(.cs)中键入“#error version”,将鼠标悬停在它上面。转到“Visual Studio 的开发人员命令提示符”并运行以下命令。 csc -语言版本:?

阅读更多提示:here


提示 #2,键入“#error version”悬停,特别有用,特别是如果您的机器上安装了多个不同版本的 Visual Studio(这几乎是地球上的每个人)
提示 #2 在 VS 2019 上对我有用,因为我安装了多个版本的 .NetFW 和 C#。这给了我我的项目使用的那个,而不是打印出默认版本。谢谢@San
p
phuclv

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

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

下图显示了相同的步骤:

步骤1:

https://i.stack.imgur.com/pzEVT.png

第2步:

https://i.stack.imgur.com/ilUYh.png


g
guyr

感谢@fortesl 和this answer

我正在使用 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.

“(默认)”是您在 vs 中使用的那个吗?
@Hacki,是的,除非您指定不同的语言版本,否则编译器将使用默认值。
谢谢@guyr。但是,为什么我不能使用 .net 核心创建 winforms 和 wpf 应用程序?如果我搜索“winforms”或“wpf”,则只有 .net 和 .net 框架可用。但是,控制台应用程序有一个可用的 .net 核心。我现在真的很困惑。 :(
A
Amod Pandey

.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 当前版本,见下文


V
Vinay Pratap Singh Bhadauria

您使用的 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 月)一起发布。在实现 IDisposable 的 IEnumerator 上调用 Dispose 的第一个版本。其他一些小功能。 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 月)发布。主要新特性:后期绑定(动态)、委托和接口泛型变化、更多 COM 支持、命名参数和可选参数 C# 5.0 于 2012 年 8 月随 .NET 4.5 发布。

参考Jon Skeet's C# Versions Answer


A
Ankit Mori

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

Visual Studio 2015: C# 6.0 Visual Studio 2013: C# 5.0 Visual Studio 2012: C# 5.0 Visual Studio 2010: C# 4.0 Visual Studio 2008: C# 3.0 Visual Studio 2005: C# 2.0 Visual Studio.NET 2003: C# 1.2 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"

有人说这取决于 .NET 框架,但对我来说不是这样。我在 VS 2015 中安装了框架 4.7.2,C# 版本是 6.0,所以说它取决于 VS 版本看起来更准确。
@Jamo 它确实取决于目标框架。例如,.NET Core 3.x 默认为 C# 8。 .NET 5.0 默认为 C# 9。 .NET 6.0 默认为 C# 10,等等。
Y
Youssef13

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

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


这个答案是唯一对我有用的答案,谢谢!
S
Sreekanth

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

每个项目可能使用不同版本的 .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

H
Hisham Shahid

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

Screenshot of how to check c# version in visual studio 2022


C
Community

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

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

您将看到如下内容:

适用于 Microsoft (R) .NET Framework 4.5 的 Microsoft (R) Visual C# 编译器版本 4.0.30319.34209 版权所有 (C) Microsoft Corporation。版权所有。

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


R
Roman

对于 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.

P
Paul Yao

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

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

https://i.stack.imgur.com/fVbID.png

构建(如果您的构建是最新的,请使用菜单选择 Build | Rebuild 强制构建。)打开输出窗口菜单选择 View | Rebuild。输出。在输出窗口中,为标记为“显示输出来自:”的项目设置“构建”,搜索“langversion”。在一个非常非常长的行(我的机器上刚刚有 1578 个字符)中间寻找一个像这样的开关:/langversion:9.0

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

https://i.stack.imgur.com/FPDRu.png


e
edW

下面概述了 .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


S
Stack Underflow

要从代码中获取 C# 版本,请使用 the Microsoft documentation 中的此代码来获取 .NET Framework 版本,然后使用其他人提到的 the table 进行匹配。您可以将框架编码到字典中的 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