Visual Studio 2017がリリースされた後、新しいC#7機能を備えたシンプルなコンソールプロジェクトを作成したいと考えました。新しいVisual Studio 2017を単にダウンロードしてから、新しいコンソールプロジェクトを作成し、新しいC#7機能を使用できると期待していました。しかし、私はできません。
NuGet package System.ValueTuple をインストールすると、タプルのようないくつかの機能を使用できます。
しかし、他の機能については、何をする必要があるのかわかりません。たとえば、 このNuGetの問題 です。
このすべてのダーティインストールを今すぐ行う必要がありますか?または、C#7機能をより簡単な方法で有効にできますか?
質問の2番目の部分でリンクした任意のタスクのようなタイプの場合、 System.Threading.Tasks.Extensions
パッケージを含める必要があります。
これらのNuGetパッケージが必要な理由は、新しい言語機能が.NETフレームワークに追加された新しい型に依存しているためです。 C#言語機能が依存する新しい型は、4.6.2以降にリリースされる次のマイナーバージョンが破損しないように「フレームワークに組み込まれる」 SemVer1。そのため、次のバージョンのフレームワークを使用してプロジェクトを構築する場合を除き、機能を動作させるにはNuGetパッケージを使用する必要があります。
これは、.NET 2.0プロジェクトで機能する拡張メソッドを取得することと同じです 。拡張メソッドを使用できますが、NuGetパッケージを使用して(またはコードを自分で追加して)プロジェクトに追加するために依存する型を取得する必要があります。
1:だから4.7または5.0、彼らがそれを呼ぶことに決めたものは何でも、4.6.3がある場合、それはマイナーリリースバージョンのバンプではなく、パッチバージョンのバンプであり、あなたは作ることができないので、そのバージョンにはありませんセマンティックバージョニングに違反することなく、パッチバージョンバンプでAPIが変更されます。
.NET 4.7を対象とするプロジェクトでは、Nugetパッケージを追加せずにC#7タプルを使用できます。手動でインストールする必要があります。
Visual Studio Installer
を実行し、[変更]をクリックします。 「個々のコンポーネント」に移動して、次の2つのコンポーネントを確認します。Microsoftは、「。NETデスクトップ環境」ワークロードから.NET 4.7コンポーネントを削除したため、Windows 10 Creator's Updateではすぐに動作しません。私はバグを提出しましたが、彼らはそれをバグではないとしてクローズしました:
Vs2017 update 3はc#7.1をサポートできますが、デフォルトではc#7.0をサポートするように構成されています。
プロジェクトの設定を変更し、c#7.1を選択できます