2008-08-13 10 views
11

これはCLRが実際には変更されていないので、これはうまくいくはずですか?C#3.0でコンパイルされたC#2.0コード消費アセンブリ

C#2.0コードを実行するボックスには、.NET 3.5が展開されたがあります。

バックグラウンドでは、尋ねられたさまざまな作業項目を完了するためにアセンブリ(ほぼプラグインに似ています)を動的に読み込むWindowsサービス(VS2005で構築された.NET 2.0のexe、〜150サーバに展開されています)があります。新しいバージョンのバスロジックを公開するたびに、アセンブリをFTPサーバーにドロップするだけで、Windowsサービスは最新のバージョンを確認、取得、保存する方法を知っています。新しいアセンブリは、現在VS2008を使用して構築され、.NET 2.0をターゲットにしています。しかし、LINQなどのC#3.0言語機能を活用し、新しいバージョンのWindowsサービスを構築して展開することなく、.NET 3.5に対してアセンブリをターゲットにしたいと考えています。

答えて

7

C#3と.Net 3.5は新しいアセンブリを追加しますが、ILは変更されません。

これは、限り、あなたはLINQのかSystem.LinqのかSystem.Core

yieldvarを参照する何か他のものを使用していないとして、ネット2のアセンブリを使用すると、C#3をコンパイルして使用することができることを意味ラムダ構文、anon型と初期化子はすべてコンパイラの巧みさです。彼らが生産するILは相互互換性があります。

新しいアセンブリを3.5用に参照できる場合は、すべて動作するはずです。

ASP.Netの新しいバージョンはありません - それはまだ2.0.50727する必要があります - しかし、あなたはまだこれは面白いです3.5

1

のためにコンパイルする必要があります。私はLinqBridgeを昨日見ていました。このフォーラムの誰かが私にそれを提案し、彼らは同様のことをやっています。

Microsoftは、2.0 CLRで必要とされるのと同じILを生成するためにすべてコンパイルすると、フレームワーク2.0,3.0,3.5という名前を付けたのは奇妙なことです。 2.0にバージョンを追加すると、ランタイム、コンパイラ、言語のバージョンが異なっているという事実を頭に浮かべることも難しいと思っていました。

2

収量、VAR、ラムダ構文、アノンの種類 および初期化子は、すべてのコンパイラ 賢です。彼らが生産するILは、相互互換性のある です。

マイナーナンバーピッキングポイントですが、とにかく2.0フィーチャでした。

関連する問題