BT

.NET 4.5で予定されている互換性のない変更

| 作者: Jonathan Allen フォローする 524 人のフォロワー , 翻訳者 尾崎 義尚 フォローする 0 人のフォロワー 投稿日 2011年10月1日. 推定読書時間: 3 分 |

原文(投稿日:■)へのリンク

.NET 4.5アセンブリの本当のバージョン番号は、4.0.30319である。これを見慣れているとしたら、それは.NET 4.0のバージョン番号と同じからである。開発者が非常に残念なのが、マイクロソフトは、コアアセンブリを「インプレース」でアップデートすることである。ユーザーが実際にインストールしている.NETのバージョンを特定するのが非常に困難になったり、.NET 4.0と4.5がインストールされたマシンをターゲットにした開発者に多くの落とし穴を作ることになる。

Visual Studioは、.NET 2.0を対象にしたプロジェクトで.NET 3.0や3.5のアセンブリを誤って使用した開発者に対して、個別のメソッドについては、これまで通りなにも言ってはくれない。IDEについては、mscorlib.dllやSystem.dllのような一般的なライブラリで、以前のバージョンには存在していなかったメソッドには警告を出さない。静的コード分析で誤りをプログラム的にチェックする場合を除き、実行時にコードが失敗するまでは、エラーであることが検出されないだろう。.NET 3.5のリリース時にサービスパックを通じて追加されたEventWaitHandle.WaitOneのオーバーロードがよい例である。

今回も説明が必要な.NET 4.5の互換性のない変更が行われており、理論的にこのような問題が存在している。

未処理、未監視の例外

.NET 2.0では、意味的な未処理例外が変更された。このバージョンより前のUIのないスレッドの例外は、単純に破棄されて、関連するスレッドが終了していた。.NET 2.0では、未処理の例外は、アプリケーション全体をクラッシュさせるようになった。 これによりデータの欠損や検出できないエラーが大幅に削減されたが、これはまたすべてのバックグランドスレッドはトップレベルの例外ハンドラで処理されることを意味することになった。

Task Parallel Libraryは、このモデルに従って提供されている。もしTaskが失敗した場合、Taskがガベージコレクションに回収される前にそのExceptionプロパティを読まなくてはならない。そうしないと、未処理例外が発生したことになり、ファイナライザがアプリケーションを終了させてしまうことになる。

.NET 4.5では、Taskのルールが2.0以前のスレッドに似た形に変更された。ログ出力の目的で、グローバルイベントが発生するが、Taskが失敗しても、アプリケーションはクラッシュしない。

System.Net.PeerToPeer.Collaboration

System.Net.PeerToPeer.Collaboration名前空間は、なんの説明もなく提供されなくなっている。

これらのライブラリは、サーバー以外のWindows VistaとWindows 7のみで提供されており、Windows Peer-to-Peer基盤を拡張している。レアな技術のサブセットで、レアにしか使われておらず、ほんの少しの情報情報が存在しているだけで、一握りの開発者に影響を与えるだけである。

WCF

maxRequestLengthとmaxReceivedMessageSizeクオートを超えた時のHTTPステータスコードが400 (Bad Request)から413 (Request Entity Too Large)に変更されている。

WPF

TextBoxBase.UndoLimitのデフォルト値が-1 (無制限)から100に変更されている。なんの説明もないが、おそらくこれによりテキストボックスのコンテンツに無制限のバージョンを保持するよりもパフォーマンスがよいだろう。

XML/XSLT

LoadOptions.SetLineInfoがLoadメソッドを通過したときにXDocumentから行番号と位置を含むバリデーションエラーがスローされる

System.Xml.Xsl.XslCompiledTransformクラスの互換モードが修正された。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT