Visual Studio 2017 RCでプロジェクトを作成して、.NET Framework 4.5プロジェクトで新しいC#7.0言語機能を使用できるかどうかを確認しました。 System.ValueTuple
NuGetを参照した後、新しいタプルは正常に機能しているように思えます。他に考えるべきことはありますか?
System.ValueTuple
NuGetの依存関係を確認したところ、.NET Framework 4.0はサポートされていないようです。これは事実ですか、それともこのランタイムでも新しい言語を動作させる方法はありますか?
C#7.0の新機能 を見ていきましょう。
タプル: System.ValueTuple
パッケージ には、portable-net40+sl4+win8+wp8
プロファイルのバージョンがあります。つまり、.Net 4.0で使用できます。 (依存関係に.Net 4.5のみがリストされている理由がわかりません。)
.Netのさらに低いバージョンでもタプルを使用したい場合、プロジェクトに ValueTuple
および関連するタイプのコード を追加する限り、タプルを使用できます。
out
変数、パターンマッチング、ローカル関数、より多くの式のメンバー、throw
式、数値リテラル構文の改善:これらの機能はすべて構文シュガーであるため、フレームワークの新しい機能は必要ありません。
ref
ローカルおよび戻り値:この機能は、C#でフレームワークが開始以来サポートしていたものを公開するため、ここでもフレームワークの変更は必要ありません。
一般化された非同期戻り型:この機能を使用するには、 System.Threading.Tasks.Extensions
パッケージ (ValueTask<T>
の1つのタイプとともに)にあるAsyncMethodBuilder
属性を持つタイプが必要です。このパッケージは.Net 4.5でのみサポートされているため、.Net 4.0の場合、 関連するタイプ 自分でコンパイルする必要があります。 (.NET 4.0でawait
onを使用するにはMicrosoft.Bcl.Async
も必要ですが、それは新しいことではありません。)
要約すると、必要なパッケージをインストールした後、C#7.0はすべて.Net 4.5で動作し、そのほとんどは.Net 4.0でも動作するはずです。
現時点では、C#7でコンパイルされたアプリケーションを.NET 4.5で実行しても問題ありませんが、C#7.0コンパイラには.NET 4.6が必要であるため、ASP.NET Dynamic Compilationを使用するASP.NETアプリケーションを。走る。
ソース: https://github.com/dotnet/roslyn/issues/17908 :
C#7.0コンパイラ(2.0以降)を実行するには.NET 4.6が必要です
https://www.nuget.org/packages/Microsoft.Net.Compilers/2.0.1 (.NET 4.5のサポートについて)の情報は古いようです。