我想找出我正在使用哪个版本的C#。如果我要使用python python -V
,则可以从命令行执行类似的操作,或键入:
import sys
print sys.version
在PHP中,我将执行以下操作:phpinfo();
在Java中:java -version
但是我无法找到如何在C#中实现这一目标。
尽管顾名思义,该问题并未回答。
我知道它依赖于.NET框架,但是有没有一种编程的方式来确定我的框架?我的意思是不转到目录并检查我的.NET文件夹的名称。
我想找出我正在使用哪个版本的C#。如果我要使用python python -V
,则可以从命令行执行类似的操作,或键入:
import sys
print sys.version
在PHP中,我将执行以下操作:phpinfo();
在Java中:java -version
但是我无法找到如何在C#中实现这一目标。
尽管顾名思义,该问题并未回答。
我知道它依赖于.NET框架,但是有没有一种编程的方式来确定我的框架?我的意思是不转到目录并检查我的.NET文件夹的名称。
Answers:
要获取框架的版本-查看主要程序集之一的版本,即
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
这取决于.NET Framework
您使用的。查看Jon Skeet关于版本的答案。
这是他的答案的简短版本。
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
C#7.0与.NET 4.6.2一起发布
C#7.3与.NET 4.7.2一起发布
C#8.0与NET Core 3.0一起发布
尽管这不能直接回答您的问题,但我将其放在此处,因为当我在查找此信息时,谷歌在搜索中首先显示了此页面。
如果您使用的Visual Studio,你可以右键点击在您的项目- >属性- >生成- >高级 这应该列出可用的版本,以及你的凸出正在使用一个。
Automatically selected based on framework version
并且无法从下拉列表中选择任何内容(已禁用),我应该有什么版本?我现在用的是VS 2019
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP \探索这些子级并查看每个版本。密钥为“ Full”的是系统上的版本。
https://support.microsoft.com/zh-CN/kb/318785 https://msdn.microsoft.com/en-us/library/hh925568(v=vs.110).aspx
帮助->关于Microsoft Visual Studio-> .NET版本在右上角指定。
据我目前的理解,Visual Studio使用OS中的.NET Framework。
可以使用项目属性->应用程序->目标框架来修改Visual Studio中项目的目标.NET Framework版本。
如果您知道.NET Framework目录,例如C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319
打开System.dll,右键单击->属性->详细信息选项卡
帮助->关于Microsoft Visual Studio
在已安装的产品列表中,有Visual C#。就我而言,Visual C#2015
Visual Studio(Microsoft)通过名称Visual C#发行了C#。
https://msdn.microsoft.com/zh-CN/library/hh156499.aspx
C#6,Visual Studio .NET 2015当前版本,请参见下文
您使用的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
在IEnumerator
该实施小号IDisposable
。其他一些小功能。- 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一起发布。
Refrence Jon Skeet的C#版本答案
默认情况下,以下是Visual Studio的C#编译器的相应版本:
您还可以修改版本,请按照以下步骤操作。
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"
如果您使用的是VS2015,请按照以下步骤进行操作:
下图显示了相同的步骤:
第1步:
第2步:
感谢@fortesl和这个答案
我正在使用VS 2019,但它不会轻易告诉您正在使用的C#版本。我正在该环境中使用C#8使用.Net Core 3.0和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.
为了查看安装的VC#编译器版本:
打开Visual Studio命令提示符,然后键入csc,然后按Enter。
您将看到如下内容:
Microsoft(R)Visual C#编译器版本4.0.30319.34209
适用于Microsoft(R).NET Framework 4.5
版权所有(C)Microsoft Corporation。版权所有。
PS:“ CSC ”代表“ C Sharp编译器 ”。实际使用此命令运行csc.exe,这是一个位于“ c:\ Windows \ Microsoft.NET \ Framework \ vX.X.XXX”中的可执行文件。有关CSC的更多信息,请访问http://www.file.net/process/csc.exe.html
对于Windows,请在命令/搜索程序行运行dev,然后选择VS的Developer Command Prompt。那你就去跑步
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.
默认情况下,基于项目的目标框架选择语言版本。
每个项目可能使用不同版本的.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
这是有关.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
要查看“默认”的确切编译器语言版本,请在开发人员命令提示符下为您安装的Visual Studio版本输入以下内容。例如,从Windows“开始”图标中选择图标:“ VS2011开发人员命令提示符”,然后输入:
csc -langversion:默认
适用于c#5的Microsoft(R)Visual C#编译器版本4.7.3062.0
要从代码获取C#版本,请使用Microsoft文档中的此代码获取.NET Framework版本,然后使用其他所有人提到的表进行匹配。您可以在字典中将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