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

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

import sys
print sys.version

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

但是我不知道如何在c#中实现这一点。

这个问题不回答它,尽管它的名字表明它应该。

我知道这取决于。net框架,但是否有一种编程方式来确定我的框架?我的意思是不需要进入目录并检查。net文件夹的名称。

247007 次浏览

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

以下是他的回答的简短版本。

c# 1.0net 1.0发布

c# 1.2(足够奇怪);发布 与net 1.1 < / p >

c# 2.0net 2.0发布

c# 3.0net 3.5发布

c# 4.0net 4发布

c# 5.0net 4.5发布

c# 6.0net 4.6发布

c# 7.0net 4.6.2发布

c# 7.3net 4.7.2发布

c# 8.0NET Core 3.0发布

c# 9.0NET 5.0发布

c# 10.0NET 6.0发布

c# 11.0NET 7.0发布

你所使用的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月)。在__abc1上调用Dispose的第一个版本,实现了IDisposable。其他一些小功能。
  • c# 2.0net 2.0和VS2005一起发布(2005年11月)。主要新特性:泛型、匿名方法、可空类型、迭代器块
  • c# 3.0net 3.5和VS2008一起发布(2007年11月)。主要新特性:lambda表达式、扩展方法、表达式树、匿名类型、隐式类型(var)、查询表达式
  • c# 4.0net 4和VS2010一起发布(2010年4月)。主要新特性:后期绑定(dynamic)、委托和接口泛型变化、更多COM支持、命名参数和可选参数
  • c# 5.0在2012年8月与net 4.5一起发布。

具有一定Jon Skeet的c#版本回答

要获得框架的版本-查看一个主要程序集的版本。

 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

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

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

你会看到如下内容:

微软(R) Visual c#编译器4.0.30319.34209

用于Microsoft (R) .NET Framework 4.5

微软公司版权所有。版权所有。

注:“CSC"代表“__abc1”。实际上,使用此命令您可以运行csc.exe,这是一个可执行文件,位于“c:\Windows\Microsoft.NET\Framework\ vx.x.x "有关CSC的更多信息,请访问http://www.file.net/process/csc.exe.html

.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 < / p >

.NET版本通过Visual Studio

Help ->关于Microsoft Visual Studio -> . net版本在右上角指定。

据我所知,Visual studio在操作系统中使用。net框架。

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

通过dll

如果你知道。net Framework目录 例如C:\Windows\ Microsoft.NET \ Framework64 \ v4.0.30319 < / p >

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

c#版本

帮助->关于Microsoft Visual Studio

在已安装的产品列表中有Visual c#。在我的案例中是Visual c# 2015

Visual Studio(微软)将c#命名为Visual c#。

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

c# 6, Visual Studio .NET 2015 当前版本,见

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

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

enter image description here

默认情况下,以下是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"

对于Windows,您在命令/搜索程序行中运行dev,并为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\ Please,选择v…例如,最近去那里,

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.

从开发人员命令提示符(Visual Studio >视图比;终端)类型:

csc -langversion:?

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

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

如果你正在使用VS2015,那么按照下面的步骤来找到相同的:

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

下面的图片显示了相同的步骤:

步骤1:

Step 1

步骤2:

Step 2

感谢@fortesl和这个答案

我使用的是VS 2019,它不容易告诉你你正在使用的c#版本。我正在使用。net Core 3.0,在那种环境中使用c# 8的VS 2019。但是"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.

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

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

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

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

  • 在左侧导航窗格中选择“Build”。在“Language Version:”旁边窗格的“General”部分是正在使用的c#编译语言版本,例如“default”或c# 5.0

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

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

csc比如langversion:默认

微软(R) Visual c#编译器版本4.7.3062.0的c# 5

要从代码中获得c#版本,请使用微软文档中的这段代码来获得. net框架版本,然后使用其他人都提到的进行匹配。你可以在字典或其他东西中编写框架到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

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

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

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

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

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

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

目前的答案已经过时了。你应该能够使用#error version(在项目中任何c#文件的顶部,或者在代码中的任何地方使用)。编译器以一种特殊的方式处理这个错误,并报告一个编译器错误CS8304,表示语言版本,也表示编译器版本。CS8304的消息如下所示:

编译器版本:'3.7.0-3.20312.3 (ec484126)'。语言版本:6。

前面的大部分答案都是正确的。只是巩固3,我发现这很简单,超级快。此外,#1现在在VS2019中是不可能的。

  1. Visual Studio: Project >性能比;建立在先进的
    这个选项现在被禁用了,默认语言由VS自己决定。详细的原因是在这里

  2. 输入“#错误版本”;在代码(.cs)的任何地方,鼠标悬停它。

  3. 进入“Visual Studio开发人员命令提示符”,执行以下命令。 csc -langversion:? < / p >

阅读更多提示:在这里

找到c#版本的有用提示:

要知道当前使用的语言版本,请在代码中放入#error version(区分大小写)。这使得编译器产生 诊断信息CS8304,带有包含编译器版本的消息

.当前选择的语言版本

来自微软文档中的c#语言版本控制

你可以在代码中的任何地方删除#error version。它将生成一个错误,因此您需要在使用它之后删除它。错误给出了编译器和语言版本的详细信息,例如:

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

至少在VS 2019中,你不需要编译#error version的代码来给你版本号。只要在代码中将鼠标移到它上,就会出现与编译代码时看到的相同的错误细节。

在visual studio 2022中,我们可以在高级选项卡中查看项目属性

enter image description here

在Visual Studio中,当构建verbose被设置为“normal”时,通过查看构建输出来查看c#语言版本。或更高(默认值为“minimal"”)。

  1. 将构建输出的详细内容调整为“正常”、“详细”或“诊断”。(另外两个值,“安静”;和“;Minimal"不要显示语言版本。)要设置构建输出的详细信息,选择菜单Tools | Options…然后在“选项”中;对话框,选择“项目和解决方案”;|“建造和运行”。寻找标签“MSBuild项目输出详细信息”。设置为上面给出的三个值之一。

查看正在使用的c#语言版本,设置构建输出verbose。 < / >

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

  2. 打开输出窗口

    .菜单选择查看|输出
  3. 在输出窗口中,设置“;Build"对于标记为“;显示来自:”的输出;

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

(要在输出窗口中搜索,在输出窗口中单击,然后使用键盘快捷键Ctrl+F调用搜索窗格。)

这是一个示例,显示了我当前项目的c#语言版本。 < / >

这里有一个奇怪的技巧,可以快速找到你正在使用的c#版本。编辑项目中的任何。cs文件,并在命名空间语句的末尾添加一个分号:

命名空间Whatever ->名称空间不管;

命名空间工作将变成红色下划线;将鼠标悬停在它上面,它会显示如下内容: CS8370:文件范围的命名空间在c#7.3中不可用。请使用10.0或更高版本的语言。"

在VS2022上使用。net Framework项目进行测试。如果使用的是。net或。net Core项目,那么这个特性可以很好地工作。