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

Sal*_*ali 166 c# version

我的问题很简单:我想知道我正在使用哪个版本的C#.如果我将使用python,我会做一些像python -V命令行或类型

import sys
print sys.version
Run Code Online (Sandbox Code Playgroud)

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

但我无法在C#中找到如何实现这一目标.

我对C#完全不熟悉,所以请不要太难打败我.令我感到惊讶的是,我无法在SO上找到这个答案,因此我认为我在找东西时遗漏了一些东西或者很糟糕.顺便说一句,这个问题没有回答,虽然名字暗示它应该.

谢谢你的回答.现在我知道它取决于.NET框架,但有没有一种编程方式来确定我的框架?(无需转到目录并检查我的.NET文件夹的名称)

Pra*_*een 213

这取决于.NET Framework你使用的.查看Jon Skeet关于版本的答案.

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

C#1.0.NET 1.0一起发布

C#1.2(奇怪的是); 随.NET 1.1发布

C#2.0.NET 2.0一起发布

.NET 3.5一起发布的C#3.0

C#4.0.NET 4一起发布

.NET 4.5一起发布的C#5.0

C#6.0.NET 4.6一起发布

C#7.0.NET 4.6.2一起发布

C#7.3.NET 4.7.2发布

  • ......和**C#6.0**与**.NET 4.6一起发布** (13认同)
  • 但是您可以使用C#7.0编译器编译.NET 2.0.检查.NET版本是一个非常有限的推论,只给出了一个可能的答案. (10认同)
  • 这里是微软文档:https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/configure-language-version (8认同)
  • ......和**C#7.0**与**.NET 4.6.2一起发布** (6认同)
  • 让我加入@ Abel的评论,[此链接](http://www.c-sharpcorner.com/article/enabling-c-sharp-7-compilation-with-visual-studio-2017/)向您展示了你的看法可以独立于框架更改C#语言版本(几乎).因此,您只能从语法错误中扣除代码假定C#的新版本,而不是在属性中选择的. (5认同)
  • 只是抬头; C#6使用不同的编译器(Roslyn)并将源代码编译到其他.NET版本而不仅仅是.NET 4.6. (3认同)
  • 实际上,它取决于项目文件中配置的 `LangVersion` `PropertyGroup` 设置。 (3认同)

小智 78

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

如果您使用的是Visual Studio,则可以右键单击项目,转到项目属性,然后转到"构建"选项卡上的"高级",查看项目所使用的版本.这应该列出可用的版本以及您的项目正在使用的版本.

在此输入图像描述

  • 这不再适用 - 请参阅:https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/configure-language-version (8认同)
  • 更新VS2019这样是不可能的。 (3认同)

Ale*_*kov 53

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

 Console.Write(typeof(string).Assembly.ImageRuntimeVersion);
Run Code Online (Sandbox Code Playgroud)

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

如果您使用的是命令行编译器(csc.exe),您可以查看帮助以查看版本(无论如何您还需要了解Framework版本:

C:\Windows\Microsoft.NET\Framework\v4.0.30319>csc /?
Microsoft (R) Visual C# 2010 Compiler version 4.0.30319.1
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是Assembly.ImageRuntimeVersion没有告诉你正确的版本号 - 在我的电脑上,**.NET 4.6 RC**已经安装但是Assembly.ImageRuntimeVersion报告**v4.0.30319** (19认同)
  • RE:Matt的评论:仅仅是因为您的PC上安装了一个.NET版本,并不意味着这是您项目中使用的版本。 (2认同)
  • 尚未有人提到获取Roslyn编译器支持的版本列表的正确指令是“ C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ MSBuild \ 15.0 \ Bin \ Roslyn \ csc.exe” / langversion :? (2认同)
  • 这很奇怪,我正在使用 .net 5 进行项目并获得程序集版本 v4.0.30319。 (2认同)

for*_*esl 21

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

csc -langversion:?
Run Code Online (Sandbox Code Playgroud)

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

1
2
3
4
5
6
7.0 (default)
7.1
7.2
7.3 (latest)
Run Code Online (Sandbox Code Playgroud)


小智 13

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

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

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

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

阅读更多提示:在这里

  • 提示#2,_键入“#error version”悬停_特别有用,特别是如果您的计算机上安装了多个不同版本的 Visual Studio(几乎是地球上的每个人) (5认同)

His*_*hid 10

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

在此输入图像描述


Vin*_*ngh 8

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

如果您正在使用visual studio进行开发,那么您可以选择.net框架版本与之相关的c#版本

这些是已知的C#版本:

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

Refrence Jon Skeet的C#版本答案

  • 这是错误的 - 它不依赖于.NET版本,它取决于编译器. (12认同)

Sim*_*wsi 8

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

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

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

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

Error   CS8304  Compiler version: '3.7.0-6.20459.4 (7ee7c540)'. Language version: 8.0.
Run Code Online (Sandbox Code Playgroud)

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


Amo*_*dey 7

.NET版本通过注册表

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP \浏览子项并查看每个版本.键为"Full"的那个是系统上的版本.

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

.NET版本通过Visual Studio

帮助 - >关于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当前版本,见下文


小智 7

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

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

下图显示了相同的步骤:

第1步:

第1步

第2步:

第2步


小智 7

感谢@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
Run Code Online (Sandbox Code Playgroud)

不确定 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.
Run Code Online (Sandbox Code Playgroud)


小智 7

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

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

<PropertyGroup>  
<LangVersion>8.0</LangVersion>  
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

我可以从 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
Run Code Online (Sandbox Code Playgroud)


You*_*f13 7

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

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

  • 这是唯一对我有用的答案,谢谢! (2认同)

Ank*_*ori 5

默认情况下,以下是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"
Run Code Online (Sandbox Code Playgroud)


小智 5

只需在 .cs 文件中写入 #error version 并查看错误列表,如下所示,指示您的语言版本。希望能帮助到你。

在此输入图像描述