2012-03-20 7 views
8

フレームワークレベルの更新(非同期など)は、下位のフレームワークでは動作しないようにコンパイルすることはできませんが、コンパイラの違いforeachループ変数スコープ)は、.net 4.0に対してC#5.0でコンパイルすると正しく動作しますか? 誰も確定リストを提供できますか? C#5.0のどの機能を.net 4.0上でコンパイルできるか

編集:

のではなく、誰もが(foreachの変数のスコープなど)コンパイラレベルの変更は動作しますかお答えすることができるだろう、私が求めることがたくさんあるものとして取り戻すれ、決定的なリストを求めます以前のフレームワークバージョンに対してC#5.0を使用する場合とは異なります。

+2

非同期は4.0で作業を行うには、フルLINQツーオブジェクトを使用することができ、 http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=9983、唯一のコンパイラ変更、結果のilは.net 4.0で動作します –

+0

通常、新しい構文は "current" "フレームワーク。 Async CTPの(現在の)バージョンのような機能は引き続き機能します。マイクロソフトはもちろん、プロダクションコードでAsync CTPを使用するよう提案していません。 4.5自体のまっすぐな機能であるすべてのものは、現時点でMicrosoftによって移植される可能性は低いですが、.NET Framework 3.5 SP1からの変更のようにコンパイラを変更しているとは思いません。 –

答えて

4

すべてです。 ランタイムのサポートが必要です。新しいライブラリが必要な機能もあります。しかし、.NET 4.5ライブラリに対してコンパイルする必要はありません。同じAPIを独自に実装することもできます。

例えば、非同期のサポートを有効にするには、プロジェクトに次のファイルを追加/ .NET 4.0のプロジェクトを待つ:https://gist.github.com/1961087

私は情報の属性を呼び出し側でそれを試していないが、私はかなり確信して

これらは、.NET 4.5に付属のものを使用するのではなく、自分で定義しても機能します。

同じトリックは、.NET 2.0で拡張メソッドを使用するためにC#3にclass ExtensionAttributeで動作し、あなたも、.NET 2.0(LinqBridge

3

機能については、4.0で動作する構文は、もともと5.0で作成したとしても4.0でコンパイルできます。 Visual Studio 11は、プロジェクトのプロパティで.NET Frameworkのバージョンを変更した場合、4.0で動作しないコードを通知しますので、これは私のガイドになります。 4.0へのコンパイルが問題の場合は、VS 11を使用して編集しますが、フレームワークの互換性は4.5にしておきます。

古いバージョンにコンパイルする新しいFUDがあります。これは以前のインカネーションでも当てはまりましたが、新しい構文を使用して後方にコンパイルしようとするとヒットしました。

私は言語機能の明確なリスト(キーワードなど)を知らず、検索で見つからなかった。私は野生の4.5言語仕様も見ていない。

+2

.NET 4.5およびC#5.0。 OPはC#5.0について明示的に質問し、正しいバージョンを採用しました。 –

+0

が修正されました。ありがとう。 –

+0

@GregoryABeamer答えてくれてありがとう、私の主な質問の一部は、コンパイラレベルの変更(foreach varaibleスコープのような)が以前のフレームワークバージョンに対してコンパイルするかどうかをコンパイルするかどうかです。これらのアップグレードされた機能をオフにします。 –

関連する問題