web-dev-qa-db-ja.com

C#8.0、NET Core 3.0、およびVisual Studioの関係

記事 Building C#8. の状態

現在の計画では、C#8.0は.NET Core 3.0と同時に出荷される予定です。ただし、私たちが取り組んでいるVisual Studio 2019のプレビューで機能が活気づき始めます。

C#8.0、NET Core 3.0、Visual Studioの関係は何ですか?

補足として、物理的な展開に関して、新しい言語バージョンが実際に何であるかについても混乱しています。新しいビジュアルスタジオデプロイの一部としてデプロイされた新しいアセンブリですか、それともネットコアsdkインストールまたはその他の一部ですか? C#8は完全なフレームワークと.NET Coreの両方に追加する必要がありますか?

14
kimsagro

。NET Core 3のリリース後の更新

C#8.0で追加されたいくつかの機能は.NET Core 3.0を必要とするため、これらは以前のC#/。NETよりも緊密な関係にあります。ペアはVSを介してワークロードとして取得できますが、C#8.0と.NET Core 3.0はVSを必要としないことに注意してください。これらは他のIDEで使用できます。

C#言語のバージョン管理 ドキュメントでは、言語と.NETの関係について詳しく説明しています。

実用的な詳細については、 Visual StudioのC#8.0をターゲットにする の方法を参照してください。

古い回答

C#バージョンとC#ツールへの更新 を見てください。これは、Visual Studioのプロジェクトに関連する言語についての洞察を提供します。

特に、

このシナリオで選択されているデフォルトの言語バージョンはPreviewです。アクセスできるC#8.0の機能は、使用しているコンパイラのバージョン(つまり.NET SDK)に完全に基づいています。今後のプレビューを使用すると、より多くの(または少し微調整された)機能が得られる場合があります。プロジェクトをビルドすると、.NET SDKは、これがまだプレビュー中であるという警告を発します。

に答えて

C#8.0、NET Core 3.0、Visual Studioの関係は何ですか?

言語、SDK、およびVisual Studioのバージョン間の関係は、以前よりもはるかに緩いです。言語は、.NETから独立して進化することができます。だからといって、それが常に正しいというわけではありません。 Visual Studioも言語やフレームワークから独立しています。 Visual Studio Installerを見ると、言語と.NETサポートがインストール可能な「ワークロード」であることがわかります。 SDKは言語機能を公開し、VSはツールを提供します。

今のところVS 2017を使用する場合は、

フォローアップとして、物理的な展開に関して、新しい言語バージョンが実際に何であるかについても混乱しています

C#8.0ソースからアセンブリを作成できるコンパイラを含むのはSDKです。

新しいビジュアルスタジオデプロイの一部としてデプロイされた新しいアセンブリですか、それともネットコアsdkインストールなどの一部ですか?

SDKの一部です。上記を参照してください。つまり、コード以外に何も「デプロイ」されません。コードは、バージョンに関係なく、.NETのバージョンを対象としています。つまり、対象となるバージョンの.NETがマシンまたはコンテナに存在している必要があります。

C#8は完全なフレームワークと.NET Coreの両方に追加する必要がありますか?

「追加する必要はありません」。このフレームワークの新しいバージョン(4.8)およびSDK(.NET Core 3.0)には、C#8.0のサポートが付属しています。

7
Kit

C#言語は、仕様とRoslynと呼ばれるリファレンスコンパイラで構成されています。

.Netバージョン(4.8または.net Core 3)は、コンパイルされたプログラム(中間言語では、アセンブリコードのタイプ)を実行するマネージランタイム(CLR)の上にあるフレームワーク(APIのセット)を表します。

C#言語はプラットフォームに依存せず、フレームワークやランタイムから独立しているのが理想的ですが、C#の歴史上、CLRの現在のバージョンでは機能が許可されていないか、機能が基づいていたいくつかの重要な言語機能が考案されました高レベルの型とフレームワークの追加(たとえば、C#5のAsync-Await、C#7のある程度の値のタプル)。

C#8では、非同期ストリームや範囲などの言語機能には、フレームワークの現在/以前のバージョンには同様に存在しない新しいフレームワークタイプが必要です。新しい既定のインターフェイスメンバーには、CLRの変更が必要です。そのため、これらの言語機能(構文)は、以前のフレームワークおよびCLRバージョンに対してコンパイルされません。

以前の言語反復とは異なり、Microsoftは新しい.Net Frameworkバージョン4.8内でこれらの要件をリリースしていません。その代わり、彼らは.Net Core 3.0を参照プラットフォームとしてプッシュしているため、前進をより速く反復できる可能性があります。

Visual Studioに関しては、以前のバージョンのIDE内でC#8でコードを記述できましたと同時に、.Net Coreに対してコンパイルします) 3.0ランタイムでは、大量のツール、シンプルさ、開発者エクスペリエンスを失うことになります。構文の強調表示、補完、コード修正などに関するツールは、豊富なコード分析APIを提供するRoslynに依存しています。

フレームワークと言語のデプロイメントは完全に同期されていないため、Visual Studioプレビューを使用すると、両方の新機能をテストするための(ほとんど)互換性のあるフレームワークと言語バージョンが提供されます。

参考になるのは、 Building C#8. ブログ投稿の「プラットフォームの依存関係」セクションです。

編集:

コメントの質問に答えるために 'How is C#8 installed':言語specはコンパイラー(Roslyn)として実装および提供されます。 Roslyn GitHubリポジトリ を参照してください。特定のVisual Studioのインストールの有無にかかわらず、コンパイラのビルド、リリース、およびインストールの概要が示されています。

7
Andrew Hanlon

C#8.0をコンパイルするには2つの方法があります。

  • 次のVisual Studioを、それを理解するRoslynコンパイラと共に使用します。 (f.e. Visual Studio 2019)
  • スタンドアロンの.NET Core SDK(利用可能な場合は3.0.0)をインストールし、「dotnet build」を呼び出します。

現在、.NET Core 3.0.0用にビルドするには、同じSDKをインストールする必要があります。

.NET 4.8用にビルドするには、.NET Full Framework 4.8 SDKをインストールする必要があります。

どちらのSDKもおそらくVisual Studio 2019に同梱されるか、これらのフレームワークをターゲットにできるように後でインストールする必要があります。

したがって:-C#-> Roslynコンパイラ

  • ランタイム->対応するSDK

小さな補遺:C#の新機能のサポートを見ると、マイクロソフトは.NET Fullフレームワーク(4.8以降)の.NET Standard 2.1と互換性を持たないでしょう。 .NET Coreのみが今後も進化し続けます。

3
Schwarzie2478