使用しているC#のバージョン


191

使用しているC#のバージョンを確認したい。Pythonを使用する場合はpython -V、コマンドラインから次のように入力するか、次のように入力します。

import sys
print sys.version

PHPでは、次のようにしますphpinfo();。Javaの場合:java -version

しかし、C#でこれを実現する方法を見つけることができませんでした。

この質問には答えられませんが、名前はそうすべきだと示唆しています。

.NETフレームワークに依存していることがわかりましたが、フレームワークを理解するプログラム的な方法はありますか?つまり、ディレクトリに移動して.NETフォルダーの名前を確認する必要はありません。



5
Visual Studioで:プロジェクトのプロパティ]> [ビルド]> [詳細設定]> [言語バージョン:codeproject.com/Tips/865579/...
Slai

回答:


65

フレームワークのバージョンを取得するには-メインアセンブリの1つのバージョンを確認してください。

 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:マットのコメント:.NETの1つのバージョンがPCにインストールされているからといって、それがプロジェクトで使用されているバージョンであるとは限りません
LoJo

@LoJo-あなたは絶対的に正しいです。1つの理由は、Visual Studioがマルチターゲットを許可している(つまり、プロジェクトのプロパティで.NETターゲットフレームワークのバージョンを選択できる)こと、もう1つの理由は、NUGETを介して新しいRoslynバージョンをプロジェクトに追加する必要があることです。3番目に、ここで書いたように、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 :?
デビッドA.グレイ

231

それは.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とともにリリースされます


13
...そしてC#6.0.NET 4.6
Matt

4
頭を上げただけです。C#6は別のコンパイラー(Roslyn)を使用し、.NET 4.6だけでなく、他の.NETバージョンにソースコードをコンパイルします。
Michael Puckett II

6
...およびC#7.0.NET 4.6.2
Jivan

12
ただし、C#7.0コンパイラで.NET 2.0をコンパイルできます。.NETバージョンの確認は非常に限られた控除であり、おそらく回答しかありません。
アベル

5
@Abelのコメントに、このリンクがフレームワークとは独立して(ほとんど)C#言語バージョンを変更する方法を示していることを付け加えましょう。したがって、コードがプロパティで選択したものよりも新しいバージョンのC#を想定しているという構文エラーからのみ差し引くことができます。
Matt

87

これはあなたの質問に直接答えるものではありませんが、この情報を探していたときにグーグルが検索で最初にこのページを表示したので、ここに入れます。

使用している場合 のVisual Studioを、次のことができ、右クリック> [プロパティ] - - >ビルド-プロジェクト>詳細 これは、利用可能なバージョンだけでなく、あなたのprojが使用しているものをリストする必要があります。

ここに画像の説明を入力してください


6
ドロップダウンにが表示さAutomatically selected based on framework versionれ、ドロップダウンから何も選択できない(無効になっている)場合、どのバージョンがありますか?私はVS 2019を使用しています
hellouworld

@hellouworld別のC#バージョンのハイパーリンクを選択できない理由をクリックすると、Webページに参​​照が表示されます。次に、[アプリケーション]タブに戻り、選択したターゲットフレームワークを確認します。
ジョニーWu

8

レジストリによる.NETバージョン

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP \で子を探索し、各バージョンを調べます。キー「フル」のものがシステムのバージョンです。

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 Frameworkバージョンを選択できます

これらは既知のC#のバージョンです。

  • .NET 1.0とともにリリースされたC#1.0およびVS2002(2002年1月)
  • C#1.2(奇妙なことに十分); .NET 1.1およびVS2003(2003年4月)でリリースされました。実装さDisposeれたIEnumerators を呼び出す最初のバージョンIDisposable。他のいくつかの小さな機能。
  • NET 2.0とともにリリースされたC#2.0およびVS2005(2005年11月)。主な新機能:ジェネリックス、無名メソッド、null許容型、イテレーターブロック
  • .NET 3.5およびVS2008(2007年11月)でリリースされたC#3.0。主な新機能:ラムダ式、拡張メソッド、式ツリー、匿名型、暗黙の型指定(var)、クエリ式
  • .NET 4およびVS2010(2010年4月)でリリースされたC#4.0。主な新機能:レイトバインディング(dynamic)、デリゲートとインターフェイスの一般的な分散、COMサポートの増加、名前付き引数とオプションのパラメーター
  • 2012年8月に.NET 4.5とともにリリースされたC#5.0

Refrence Jon SkeetのC#バージョンの回答


Uは.NET 2.0のC#3.0の一部の機能を使用できるため、実際には1-1マッピングではありません。
nefarel 2014年

13
これは間違っています-.NETバージョンに依存せず、コンパイラに依存します。
markmnl 2016年

これは明らかに間違っています。現在のプロジェクトは.NET 4.0に設定されていますが、それでもC#7.0の機能を使用できます。しかし、リモートにプッシュすると、CI / CDシステムはC#バージョン5または6を使用するため、ビルドに失敗しました
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(R).NET Framework 4.5

Copyright(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.

1

言語バージョンは、デフォルトでプロジェクトのターゲットフレームワークに基づいて選択されます。

各プロジェクトは異なるバージョンの.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フレームワークとコンパイラのバージョンがどのように関連付けられ、設定され、変更されるかの概要を次に示します。各プロジェクトには、バージョン3.xまたは2.xなどのターゲット.NETフレームワークバージョンがあります。.NETフレームワークには、ランタイムのタイプとコンポーネントが含まれています。

Visual Studioのバージョンのインストールと.NET Frameworkのバージョンにより、使用できる互換性のあるc#言語のバージョンとコンパイラオプションが決まります。Visual Studioプロジェクトで使用されるデフォルトのc#バージョンとオプションは、インストールされている最新の言語バージョンであり、使用されている.NET Frameworkバージョンと互換性があります。

Visual Studio 2011内のプロジェクト内のフレームワークまたはC#言語を表示または更新するには:

  • ソリューションエクスプローラーでプロジェクトを右クリックし、[プロパティ]を選択します
  • 左側のナビゲーションペインで[アプリケーション]を選択します。ターゲットフレームワーク:は.NETフレームワークのバージョンです。下矢印を選択して、使用可能なすべてのフレームワークバージョンを表示します。

  • 左側のナビゲーションペインで[ビルド]を選択します。ペインの「一般」セクションの「言語バージョン:」の横にあるのは、使用されているC#コンパイラー言語バージョンです。例えば、「デフォルト」またはC#5.0です。

  • [言語バージョン:]ドロップダウンで下矢印を選択して、利用可能なすべての言語バージョンを表示します。'default 'が使用中のc#バージョンである場合、互換性のある最新のc#言語バージョンが使用されます。

'default'の正確なコンパイラ言語バージョンを確認するには、インストールされているVisual Studioバージョンの開発者コマンドプロンプトに次のように入力します。たとえば、Windowsの[スタート]アイコンから次のアイコンを選択します:「VS2011の開発者コマンドプロンプト」と入力します。

csc -langversion:デフォルト

Microsoft(R)Visual C#コンパイラバージョン4.7.3062.0(c#5用)


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.