ページ

2012年4月19日木曜日

[.NET] .NET 4.5 は WinRT、Silverlight、Windows Phone のすべてを含む

.NET for Metro style apps」 より。
記事の中ほどに .NET Framework 4.5 は WinRT、Silverlight 5、Windows Phone 7.1 のすべてを含むということが図示されています。
WinRT は、今までの .NET Framework や Silverlight とはいろいろと違うところがあったりすると思いますが、.NET Framework 4.5 から見ればサブセットになるようにデザインされているようです。

と言っても、これはあくまで 「どっちがどっちのサブセットになっているか」 というような概念的なところでしょうし、そもそも、この解説を書いてるのが 「CLR コアフレームワークチームのプログラムマネージャー」 なので .NET Framework 4.5 や Silverlight といってもそのすべてのことではなく 「コア」 の部分のことです。
「コア」 っていうのは、簡単に言ってしまえば System.String とか System.Int32 とか List<T> とかっていう基本的な部分のことです。WPF やら XAML やらといった部分は含まれません。

このあたりの話は Silverlight 2 時代がわかりやすいんじゃないかと思います。
Silverlight 2 のときは .NET Framework と互換性がありませんでした。なので、Silverlight で作ったクラスライブラリのアセンブリ(DLL)を .NET Framework のプロジェクトで参照設定すると 「互換性がないアセンブリ」 と言われてビルドすることも実行することもできませんでした。たとえそのクラスライブラリが String しか使ってないような単純なものであってもです。
サーバーとクライアントでやりとりするデータをクラスとして表現してサーバーのプロジェクトとクライアントのプロジェクトで共有して使うっていうようなことが出来なかったんです。このころはソースコードを共有するしかありませんでした。(ソースコードは互換性がありました)
これが Silverlight 3 で変更されて .NET Framework と互換性があるようになりました。もちろん、.NET Framework にしか無い機能、Silverlight にしか無い機能を使ってるとダメですが、そうでなければアセンブリを相互に参照することができます。

ブログの記事にもリンクがある MSDN の 「汎用性のあるクラス ライブラリ」 が具体的です。
Visual Studio 11 Beta には汎用性のあるクラスライブラリを作るための Portable Class Library プロジェクトが入ってるそうです。このプロジェクトテンプレートを使えばどのプラットフォームのどのバージョンをサポートしたいかを選択できます。(たぶんそれに合わせて適切なアセンブリを参照してくれるんでしょう)
Portable Class Library で選択できるプラットフォームは以下みたいな感じ。

PortableClassLibraryDialog.png

Portable Class Library で使えるのは以下のアセンブリ。

  • mscorlib.dll

  • System.dll

  • System.Core.dll

  • System.ComponentModel.Composition.dll

  • System.ComponentModel.DataAnnotations

  • System.Net.dll

  • System.Runtime.Serialization.dll

  • System.ServiceModel.dll

  • System.ServiceModel.Web.dll

  • System.Xml.dll

  • System.Xml.Linq

  • System.Xml.Serialization.dll

  • System.Windows.dll

このうちすべてのプラットフォームで使えるコアアセンブリは mscorlib.dll、 System.dll、 System.Core.dll、 System.Xml.dll、System.Xml.Serialization.dll だけ。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。