今月初旬にTechEdでVisual Studio"Orcas"の正式名を発表しました。これはVisual Studio 2008と呼ばれることになります。.NET Framework "Orcas"リリースの正式名は.NET Framework 3.5と呼ばれます。 (これには新しいLINQサポート、統合ASP.NET AJAX サポート、新しいASP.NETデータコントロールなどが含まれます。)
VS 2008 と.NET 3.5 ベータ2は今夏の下旬に出荷します。そしてベータ2リリースでは新しい機能をすぐに使用してアプリケーションを公開したいと思っている人に対してGo-Liveライセンスをサポートします。
マルチターゲティングって何?
Visual Studioの過去のリリースだと、それぞれのVisualStudioのリリースで特定の.NET Frameworkのバージョンだけをサポートしていました。例えば、VS 2002は.NET 1.0とのみ機能し、VS 2003は.NET 1.1とのみ機能し、VS 2005は.NET 2.0とのみ機能していました。
VS2008リリースで始めた大きな変更の1つが"マルチターゲティング"と呼ばれているサポートです。つまり、Visual Studioは今では.NET Frameworkの複数のバージョンをターゲットにすることをサポートしており、開発者は新しい.NET Frameworkライブラリのバージョンを使うために既存のプロジェクトや配備されたアプリケーションを常にアップグレードする必要なく、Visual Studioが提供する新しい機能を活用できるようになります。
VS2008で既存のプロジェクトを開いたり、新しいものを作成した時は、使用する.NET Frameworkのバージョンを選択することができ、IDEはそのコンパイラや機能をこれに合うように更新します。とりわけ、これは、そのフレームワークのバージョンとは動作しない機能、コントロール、プロジェクト、アイテムテンプレート、アセンブリ参照を非表示にさせ、アプリケーションをビルドする時コンパイルされた出力を取得して古いバージョンの.NET Frameworkしかインストールされていないマシン上にコピーすることができ、そしてそのアプリケーションが動作すること知る、ということを意味します。
.NET 2.0をターゲットにした新しいプロジェクトをVS2008上で作成
VS2008 ベータ2の最近のビルド上でマルチターゲティングが動作している事例を見るには、ファイル-新しいプロジェクトを選択して新しいアプリケーションを作成します。
以下を見て頂ければ、新しいプロジェクトのダイアログの右上にドロップダウンが表示されていて、新しいプロジェクトの作成時に.NET Frameworkのどのバージョンをターゲットにするかが選択できるようになっているのがお分かり頂けると思います。もし.NET Framework3.5を選択した場合、以前のVSのバージョンには無かったたくさんの新しいプロジェクトのテンプレート(WPFクライアントアプリケーションやWCF Webサービスプロジェクトを含む)が表示されると思います。
もし代わりに.NET2.0をターゲットにするようにドロップダウンを変更した場合、自動的にプロジェクトリストをフィルタして.NET2.0 フレームワークがインストールされたマシン上でサポートされるプロジェクトテンプレートだけが表示されます。
もし.NET2.0をドロップダウンで選択して新しいASP.NET Webアプリケーションを作成する場合、既存のASP.NET2.0サーバと動作するようにコンパイル設定、アセンブリ参照、web.config設定を構成して、新しいASP.NETプロジェクトを作成します。
コントロールツールボックスに行くと、ASP.NET2.0上で動作するコントロールのみが表示されています。
もし「追加-参照」を選択してアセンブリ参照ダイアログを引き出した場合、.NET2.0上でサポートされていない.NETクラスアセンブリはグレーになっていて、プロジェクトに追加できないことが確認できると思います。(.NET3.0または.NET3.5アセンブリを選択した時にOKボタンがアクティブになりません。)
新しい.NET3.5の機能を使わないなら、何故VS2008を使うの?
"ASP.NET2.0プロジェクトを作成するためにVS2008を使った場合、VS2005をただ単に使うのに比べてどのような価値が得られるのか?"と疑問に思われるかもしれません。いい部分はフレームワーク/ASP.NETバージョンを更新することなく既存のプロジェクトで今すぐに活用することができるVS2008のツール独自の価値をたくさん得ることができます。Web開発スペースのいくつかの大きなツール機能で、恐らくかなり気に入って頂けるものとしては、
- JavaScript インテリセンス
- 非常にリッチなJavaScript デバッグ
- デザインタイムでのネストされたASP.NETマスターページのサポート
- WYSIWYGデザイナ内でリッチCSS編集とレイアウトサポート
- 1ページ上で同時にソースとデザインビューを両方持つことができる分割ビューデザイナサポート
- 非常に高速なASP.NETページデザイナ(ソースとデザインモード間のビュー切り換えでパフォーマンスを劇的に改善)
- リモートサーバー上のデータベースに対する自動化されたSQLスクリプト生成とホスティング配備のサポート
.NET Frameworkのどのバージョン(新しいフレームワークバージョンをターゲットにするためにプロジェクトを必ずしもアップグレードする必要なく)でも上記の機能が全て使用することができます。これらの機能(優れた新しいフレームワーク機能も)については今後数週間にわたって投稿していきます。
後で既存のプロジェクトを.NET3.5にアップグレードするにはどうすればいいの?
もし後でプロジェクトやサイトをフレームワークライブラリの.NET3.0または.NET3.5バージョンをターゲットとするように更新したい場合は、ソリューションエクスプローラでプロジェクトを右クリックしてプロパティページを出します。
"ターゲットのフレームワーク"ドロップダウンからターゲットにしたいフレームワークのバージョンを選択して変更することができます。これを行うとVSが自動的に正しいフレームワークのバージョンを使用するようにプロジェクトのコンパイラの設定や参照を更新します。例えば、デフォルトではASP.NETコントロールおよびランタイム機能やビルドインのASP.NET AJAXサポート(もはや別でASP.NET AJAX1.0をダウンロードしてインストールする必要がありません。)を提供する.NET3.5で出荷される新しいLINQアセンブリやSystem.Web.Extensionsアセンブリを新しいをプロジェクトに追加します。
一度プロジェクトのターゲットバージョンを変更すれば、新しい.NET3.5プロジェクトの項目テンプレートが「新しい項目の追加」ダイアログで表示され、.NET3.5に対してビルドするアセンブリを参照することができ、また.NET3.5特有のコントロールがツールボックスに表示されているのを確認することができます。
例えば、以下で新しい<asp:listview>コントロール(データの報告、編集、挿入、削除、ページングを、生成されたマークアップを100%コントロールでき、インラインのスタイルやそれ以外のHTML要素を持たないで、行うことができるすばらしい新しいコントロールです。)、新しい<asp:linqdatasource> コントロール(LINQ to SQLデータモデルに対して簡単にバインドしたり作業したりすることができるようになります。)、<asp:datapager>コントロールがツールボックスの"データ"セクションに表示されることを確認することができます。
プロジェクトのプロパティダイアログでフレームワークのバージョンを"アップ"させることに加え、現在.NET3.0または3.5でビルドされているプロジェクトを変更して"ダウン"させることも可能です。(例えば、.NET3.5から2.0に移動)これは自動的にプロジェクトから新しいアセンブリの参照を削除してweb.configファイルを更新し、古いフレームワークに対してコンパイルできるようにします。(注:もしプロジェクトのコードが新しいAPIに対して書かれていた場合、当然ですが変更する必要があります。)
.NET 1.0や 1.1はどうなるの?
残念ながら、VS2008のマルチターゲティングサポートでは.NET2.0、.NET3.0、.NET3.5のみ有効で、それより古いフレームワークのバージョンには有効ではありません。
この理由としては、CLRエンジンが.NET1.xと2.xの間でかなり変更され、デバッグをサポートするのが非常に難しいためです。結局サポートするためにかかるコストが非常に大きく、Visual Studioの多くの部分へ影響があるため、今回のリリースに1.1のサポートを追加することができませんでした。
VS 2008は確かにVS 2005、VS 2003、VS 2002とサイドバイサイドで起動します。そのため、VS2008と同じマシン上でVS2003を使用して.NET1.1プロジェクトを継続してターゲットにすることはもちろん可能です。
VS 2005からVS 2008へ、そして.NET Framework 2.0から3.5に移動させた時の互換性は?
できるだけ、.NET Framework3.5が.NET2.0からのアップグレードでは完全互換で、新しいフレームワークのバージョンをターゲットにするためにコードを一切変更しなくてもいい様に努力しています。.NET3.5リリースで既存の.NETアセンブリには慎重に重大な変更ではない修正のみを行い、新しい機能は別のアセンブリに追加して重大な変更の可能性を最小限に抑えました。
またVS2008でプロジェクトモデルやビルドの変更を行っていません。私もあなたと同じく同じことを2度と繰り返したくないです。"Webサイト"と"Webアプリケーションプロジェクト"のモデルは両方とも完全にサポートされて進んでいます。
Hope this helps,
Scott