사용중인 C # 버전


191

사용중인 C # 버전을 확인하고 싶습니다. 파이썬을 사용 python -V하는 경우 명령 줄에서 다음과 같은 작업을 수행 하거나 다음을 입력하십시오.

import sys
print sys.version

PHP에서는 다음과 같이 할 것입니다 : phpinfo();java :java -version

그러나 C #에서 이것을 달성하는 방법을 찾을 수 없었습니다.

이 질문 은 대답하지는 않지만, 이름은 그렇게해야한다고 제안합니다.

.NET 프레임 워크에 의존하지만 프레임 워크를 파악하는 프로그래밍 방식이 있습니까? 디렉터리로 이동하지 않고 내 .NET 폴더의 이름을 확인하지 않고 의미합니다.


5
이것은 John Skeet의 최고 평점 질문입니다
Avi Turner

5
Visual Studio에서 : 프로젝트 속성> 빌드> 고급 ...> 언어 버전 : codeproject.com/Tips/865579/…
Slai

답변:


66

프레임 워크 버전을 얻으려면-주요 어셈블리 중 하나의 버전을 확인하십시오.

 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

22
불행히도 Assembly.ImageRuntimeVersion은 올바른 버전 번호를 알려주지 않습니다. 내 PC에는 .NET 4.6 RC 가 설치되어 있지만 Assembly.ImageRuntimeVersion은 v4.0.30319를
Matt

1
.NET 버전을 보지 않는 C # 6을 사용하지 않는 한.
Michael Puckett II

2
RE : Matt의 의견 : PC에 하나의 .NET 버전이 설치되어 있다고해서 프로젝트에서 사용중인 버전이 아닙니다.
LoJo

@LoJo-당신은 절대적으로 맞습니다. 한 가지 이유는 Visual Studio에서 다중 타겟팅을 허용하기 때문에 (예 : 프로젝트 속성에서 .NET Target Framework 버전을 선택할 수 있음) 다른 이유는 NUGET을 통해 프로젝트에 최신 Roslyn 버전을 추가해야하기 때문입니다. 내가 쓴 셋째는, 여기 ,에는 Csc.exe가 버전 5.0로 제한됩니다 및 C #의 높은 버전을 감지하는 데 사용할 수 없습니다.
Matt

3
아무도 Roslyn 컴파일러가 지원하는 버전 목록을 얻는 올바른 지침은 "C : \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community \ MSBuild \ 15.0 \ Bin \ Roslyn \ csc.exe"라고 언급하지 않았습니다. / langversion :?
David A. Gray

235

.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.0NET Core 3.0 과 함께 릴리스되었습니다.


4
그냥 머리 위로; C # 6은 다른 컴파일러 (Roslyn)를 사용하며 .NET 4.6이 아닌 다른 .NET 버전으로 소스 코드를 컴파일합니다.
Michael Puckett II

12
그러나 C # 7.0 컴파일러로 .NET 2.0을 컴파일 할 수 있습니다. .NET 버전을 확인하는 것은 매우 제한적인 추론이며 가능한 대답 만 제공합니다.
Abel

5
@Abel의 의견 에이 링크 가 프레임 워크와 독립적으로 C # 언어 버전 (거의)을 변경하는 방법을 보여줍니다. 따라서 코드에서 속성에서 선택한 것보다 최신 버전의 C #을 가정한다는 구문 오류 만 공제 할 수 있습니다.
Matt

87

이것이 귀하의 질문에 직접 대답하지는 않지만 Google 이이 정보를 찾을 때 검색 에서이 페이지를 가장 먼저 가져 왔으므로 여기에 넣습니다.

Visual Studio를 사용하는 경우 프로젝트-> 속성-> 빌드-> 고급을 마우스 오른쪽 버튼 으로 클릭 하면 사용할 수있는 버전과 프로젝트에서 사용중인 버전이 나열됩니다.

여기에 이미지 설명을 입력하십시오


7
드롭 다운에 어떤 버전이 있고 드롭 다운 Automatically selected based on framework version에서 아무것도 선택할 수없는 경우 (비활성화 됨)? VS 2019를 사용하고 있습니다.
hellouworld

@hellouworld 다른 C # 버전 하이퍼 링크를 선택할 수없는 이유를 클릭하면 웹 페이지에서 참조를 제공합니다. 그런 다음 애플리케이션 탭으로 돌아가서 선택한 대상 프레임 워크를 확인하십시오.
Johnny Wu

8

레지스트리를 통한 .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

Visual Studio를 통한 .NET 버전

도움말-> Microsoft Visual Studio 정보-> .NET 버전은 오른쪽 상단에 지정되어 있습니다.

이 시점에서 Visual Studio는 OS의 .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

사용하고있는 C # 버전은 사용중인 .Net 버전에 따라 다릅니다.

개발을 위해 Visual Studio를 사용하는 경우 관련된 C # 버전 인 .net 프레임 워크 버전을 선택하십시오.

알려진 C # 버전은 다음과 같습니다.

  • .NET 1.0 및 VS2002 와 함께 릴리스 된 C # 1.0 (2002 년 1 월)
  • C # 1.2 (기괴하게도 충분 함); .NET 1.1 및 VS2003 (2003 년 4 월)과 함께 릴리스되었습니다. 호출에 대한 첫 번째 버전 DisposeIEnumerator구현의 IDisposable. 다른 작은 기능들.
  • C # 2.0.NET 2.0 및 VS2005 (2005 년 11 월)와 함께 릴리스되었습니다 . 주요 새로운 기능 : 제네릭, 익명 메서드, nullable 형식, 반복자 블록
  • C # 3.0.NET 3.5 및 VS2008 (2007 년 11 월)과 함께 릴리스되었습니다 . 새로운 주요 기능 : 람다 식, 확장 메서드, 식 트리, 익명 형식, 암시 적 타이핑 ( var), 쿼리 식
  • .NET 4 및 VS2010 (2010 년 4 월)과 함께 릴리스 된 C # 4.0 . 주요 새로운 기능 : 후기 바인딩 ( dynamic), 델리게이트 및 인터페이스 일반 분산, 추가 COM 지원, 명명 된 인수 및 선택적 매개 변수
  • C # 5.0 은 2012 년 8 월 .NET 4.5 와 함께 릴리스되었습니다 .

굴절 Jon Skeet의 C # 버전 답변


U는 .NET 2.0에서 C # 3.0의 일부 기능을 사용할 수 있으므로 실제로는 1-1 매핑이 아닙니다.
nefarel

13
이것은 잘못입니다-.NET 버전에 의존하지 않으며 컴파일러에 의존합니다.
markmnl

이것은 명백한 잘못입니다. 현재 프로젝트가 .NET 4.0으로 설정되었지만 여전히 C # 7.0 기능을 사용할 수 있습니다. 내가 원격 다음에 밀어 일단은 C # 버전 5 또는 6 사용하기 때문에 그러나 CI / CD 시스템 구축에 실패
phuclv을

이것은 C # 6.0 이후로 사실이 아닙니다
asaf92

6

기본적으로 다음은 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"

5

개발자 명령 프롬프트 유형에서

csc -langversion:?

기본을 포함하여 지원되는 모든 C # 버전이 표시됩니다.

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

5

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

OP는 코딩 관련 답변이 필요한 것 같습니다
bradbury9

4

VS2015를 사용하는 경우 아래 단계에 따라 동일한 정보를 찾으십시오.

  1. 프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오.
  2. 속성 탭을 클릭 하십시오.
  3. 특성 창에서 빌드 옵션을 선택 하십시오 .
  4. 그런 다음 Advance 버튼 을 클릭하십시오 .
  5. 언어 버전을 확인할 수 있습니다.

아래 이미지는 동일한 단계를 보여줍니다.

1 단계:

1 단계

2 단계:

2 단계


3

설치된 컴파일러 버전의 VC #를 보려면 다음을 수행하십시오.

Visual Studio 명령 프롬프트를 열고 csc를 입력 한 다음 Enter 키를 누릅니다.

다음과 같은 내용이 표시됩니다.

Microsoft (R) Visual C # 컴파일러 버전 4.0.30319.34209

Microsoft .NET Framework 4.5 용

저작권 (C) Microsoft Corporation. 판권 소유.

PS : " CSC "는 " C Sharp Compiler "를 나타냅니다. 실제로이 명령을 사용하면 "c : \ Windows \ Microsoft.NET \ Framework \ vX.X.XXX"에있는 실행 파일 인 csc.exe를 실행합니다. CSC에 대한 자세한 내용은 http://www.file.net/process/csc.exe.html을 방문하십시오 .


3

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 \에 모든 디렉토리와 파일이 표시됩니다. 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.

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

0

다음은 .NET 프레임 워크와 컴파일러 버전의 관계, 설정 및 수정 방법에 대한 개요입니다. 각 프로젝트에는 대상 .NET 프레임 워크 버전 (예 : 버전 3.x 또는 2.x)이 있습니다. .NET 프레임 워크에는 런타임 유형 및 구성 요소가 포함되어 있습니다.

Visual Studio 버전 설치 및 .NET 프레임 워크 버전은 사용할 수있는 호환 가능한 C # 언어 버전 및 컴파일러 옵션을 결정합니다. Visual Studio 프로젝트에서 사용되는 기본 c # 버전 및 옵션은 사용중인 .NET 프레임 워크 버전과 호환되는 최신 언어 버전입니다.

Visual Studio 2011의 프로젝트 내에서 Framework 또는 C # 언어를 보거나 업데이트하려면

  • 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하십시오.
  • 왼쪽 탐색 창에서 '응용 프로그램'을 선택하십시오. 대상 프레임 워크에서 : .NET 프레임 워크 버전입니다. 사용 가능한 모든 프레임 워크 버전을 보려면 아래쪽 화살표를 선택하십시오.

  • 왼쪽 네비게이션 창에서 '빌드'를 선택하십시오. 창의 언어 버전 : '옆에있는'일반 '섹션에서 사용중인 C # 컴파일러 언어 버전입니다 (예 :'default '또는 c # 5.0).

  • 사용 가능한 모든 언어 버전을 보려면 'Language Version :'드롭 다운에서 아래쪽 화살표를 선택하십시오. 'default'가 사용중인 c # 버전 인 경우 최신 호환 가능한 C # 언어 버전이 사용됩니다.

'default'에 대한 정확한 컴파일러 언어 버전을 보려면 설치된 Visual Studio 버전의 개발자 명령 프롬프트에 다음을 입력하십시오. 예를 들어, Windows 시작 아이콘에서 "개발자 명령 프롬프트 VS2011"아이콘을 선택하고 다음을 입력하십시오.

csc -langversion : 기본

C # 5 용 Microsoft (R) Visual C # 컴파일러 버전 4.7.3062.0


0

코드에서 C # 버전 을 가져 오려면 Microsoft 설명서 에서이 코드를 사용 하여 .NET 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.