C#4.0コンパイラで作成されたILをCLR 2.0で実行できますか?明確にするためにC#4.0コンパイラで作成したILをCLR 2.0で実行できますか?
は、私はマルチターゲットVS 2010(VSは、右のコンパイラのバージョンを選択した場合)について尋ねていないよ、私はcsc.exe 4.0は、マルチターゲットをサポートしているかどうかを知りたい...
C#4.0コンパイラで作成されたILをCLR 2.0で実行できますか?明確にするためにC#4.0コンパイラで作成したILをCLR 2.0で実行できますか?
は、私はマルチターゲットVS 2010(VSは、右のコンパイラのバージョンを選択した場合)について尋ねていないよ、私はcsc.exe 4.0は、マルチターゲットをサポートしているかどうかを知りたい...
他のすべてが失敗した場合は、試してみてください。私はちょうどVS2010b2に次のようにテストしてみた、2.0をターゲットにコンパイル:
using System;
class Program {
static void Main() {
Write();
Write(msg: "world");
Console.ReadLine();
}
static void Write(string msg = "Hello") {
Console.WriteLine(msg);
}
}
これは、.NET 2.xの/ 3にも存在しているメタデータを使用する2つの新しいC#4.0 言語機能を使用しています.x/CLR 2;私の通常の(CLR 2)マシンで正常に実行されます(私のVS2010b2はVMです)。だから、私は「はい、いくつかの機能のために」と結論づけます。明らかに、フレームワーク依存の機能(dynamic
など)を使用すると、それほどうまく終了しません。
編集:あなたのコメント;私はcsc
をコマンドラインで試しましたが、デフォルトではこのはのターゲットCLR 4になります。私はCLR 2をターゲットにすることができるかどうかを調べようとします(VSのように)。残念ながら、それはもはや...
更新ビルド出力ウィンドウに(偽造、ところで)コマンドラインが含まれています。いくつかの「内情に通じ」人をして戻って来なかった:
パス/ nostdlibとA 2.0 mscorlib.dllへの参照。
そして案の定:
C:\Windows\Microsoft.NET\Framework\v4.0.21006>csc /nostdlib /reference:%SystemRo
ot%\microsoft.net\framework\v2.0.50727\mscorlib.dll /out:c:\my.exe /target:exe "
C:\Users\Marc\Documents\Visual Studio 2010\Projects\ConsoleApplication6\ConsoleA
pplication6\program.cs"
Microsoft (R) Visual C# 2010 Compiler version 4.0.21006.1
Copyright (C) Microsoft Corporation. All rights reserved.
正常に動作します
(exeファイルは私の非4.0のマシン上で動作します)。クレジット:Kevin Pilch-Bisson
C#4.0 .NET CLR 4.0を使用しているため、CLR 2.0とのバイナリ互換性はありません。あなたは2.0フレームワークをターゲットにすることができます。
コンパイラによって異なります。
これまでのところ、C#4.0コンパイラは.NET 2.0ランタイムをターゲットとし、そのランタイムと互換性のあるILを生成し、.NET 2.0でも実行されるアセンブリのみを参照できることを示しています。
ターゲティングは選択肢ですが、他のコンパイラでも同じ機能が保証されるわけではありません。
ほとんどの場合、コンパイラを実装するチームによって決定されると思います。
たとえば、C#とVB.NETのコンパイラチームは、マルチターゲット化をサポートしている可能性があります(ただし、VSは別のターゲットに対して異なるコンパイラを選択するVisual Studioの機能として残しています)。
.NETフレームワークを使用している他のベンダーも、他の決定を下す可能性があります。
私は、私はC#4.0コンパイラではなくVS.について特に尋ねた理由です、csc.exe 3.5でCLR 2.0をターゲットにすることができます知っていますVS 2010は現在ベータ2ですので、あなたはそれについてはわかりませんが、私はmutitargetingをサポートする決定が行われたと思います... –
バイナリ比較可能性は何ですか? –
ボブは「互換性」と言うことを意味しました –
ハハ正しいエド、スペルチェックに頼ることができないときはスペルできません。ありがとう! – Bob