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

时间:2013-10-23 04:42:38

标签: c# version

我的问题很简单:我想找出我正在使用的C#版本。 如果我要使用python,我会从命令行执行类似python -V的操作,或者输入

import sys
print sys.version

在php中,我会这样做:phpinfo();中的java -version:{{1}}

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

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

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

17 个答案:

答案 0 :(得分:195)

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

这是他答案的简短版本。

  随 .NET 1.0发布

C#1.0

     

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

     随着 .NET 2.0

发布

C#2.0      随着 .NET 3.5

发布

C#3.0      随着 .NET 4

发布

C#4.0      随 .NET 4.5

发布

C#5.0      随着 .NET 4.6

发布

C#6.0      随着 .NET 4.6.2发布

C#7.0

     随着 .NET 4.7.2发布

C#7.3

答案 1 :(得分:67)

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

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

enter image description here

答案 2 :(得分:46)

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

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

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

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

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

答案 3 :(得分:8)

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

如果您使用visual studio进行开发,则可以选择.net框架版本  因此与之关联的c#版本

这些是已知的C#版本:

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

参考Jon Skeet's C# Versions Answer

答案 4 :(得分:6)

.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。

可以使用Project Properties - >修改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 当前版本,见下文

答案 5 :(得分: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
  9. 您也可以修改版本,请按照以下步骤操作。

    打开项目属性窗口:

    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"
    

答案 6 :(得分:3)

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

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

你会看到如下内容:

  

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

     

for Microsoft(R).NET Framework 4.5

     

版权所有(C)Microsoft Corporation。保留所有权利。

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

答案 7 :(得分:3)

上面的大多数答案都是正确的。只是合并3,我发现它很容易而且非常快。 VS2019中现在#1也无法使用。

  1. Visual Studio:项目>属性>构建>高级
    该选项现已禁用,默认语言由VS自己决定。详细原因可用here

  2. 在任意位置的代码(.cs)中键入“#错误版本”,将其悬停在鼠标上。

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

了解更多提示:here

答案 8 :(得分:2)

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

答案 9 :(得分:2)

感谢@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.

答案 10 :(得分:2)

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

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

答案 11 :(得分:1)

在开发人员命令提示符下输入

csc -langversion:?

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

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

答案 12 :(得分:1)

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

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

答案 13 :(得分:1)

如果您使用的是VS2015,请按照以下步骤进行查找:

  1. 右键单击该项目。
  2. 点击<属性>属性标签。
  3. 从属性窗口中选择 Build 选项。
  4. 在那点击 Advance 按钮。
  5. 在那里您将找到语言版本。

下图显示了相同的步骤:

步骤1:

Step 1

第2步:

Step 2

答案 14 :(得分:0)

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

答案 15 :(得分:0)

此处概述.NET框架和编译器版本之间的关系,设置和修改方式。每个项目都有一个目标.NET Framework版本,例如版本3.x或2.x。 .NET框架包含运行时类型和组件。

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

要在Visual Studio 2011中查看或更新项目中的Framework或C#语言,请执行以下操作:

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

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

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

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

  

csc -langversion:默认

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

答案 16 :(得分:0)

查找C#版本的有用技巧:

要知道您当前使用的语言版本,请输入#error 版本(区分大小写)在您的代码中。这使得编译器产生 诊断程序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的代码即可获得版本号。只需将鼠标悬停在代码中,就会弹出与编译代码时相同的错误详细信息。