エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Windows Phone 8 のアプリ プラットフォームの互換性

2014/06/18

対象: Windows Phone 8 および Windows Phone Silverlight 8.1 | Windows Phone OS 7.1

一般に Windows Phone アプリ プラットフォームでは、Windows Phone OS 7.1 をターゲットとするアプリを、変更や再コンパイルなしで Windows Phone 8 で実行可能です。ただし、アプリが想定どおりに動作することを確認するため、Windows Phone 8 エミュレーターまたはデバイスでアプリをテストする必要があります。パフォーマンスの向上、Windows Phone 8 がサポートする高速なマルチコア ハードウェア、および表面的な違いが、Windows Phone 8 上の Windows Phone OS 7.1 アプリの動作と外観に影響する可能性があります。

また、Windows Phone OS 7.1 アプリを Windows Phone 8 上で実行した場合に、アプリの動作が違ってくる可能性のあるシナリオも他にあります。1 つのシナリオは、ソースの非互換性の結果 Quirks モードによって変更が適用されることが原因です。もう 1 つのシナリオは、バイナリ非互換性、つまり互換性に影響する変更が原因です。ほとんどの場合、ソースの非互換性の違いがあっても、Quirks モードにより、Windows Phone の特定のバージョンをターゲットとする開発者は特に何もする必要はありません。ただし、(互換性に影響する変更と見なされる) ランタイム動作の変更があったり、Windows Phone OS 7.1 アプリを Windows Phone 8 用に再コンパイルして Quirks モードが適用されなくなったりすることが原因で、アプリ互換性の問題が発生することがあります。このトピックでは、Quirks および互換性に影響する変更について詳しく説明し、開発者に影響のある、Windows Phone 8 での既知の互換性に影響する変更および Quirks のリストを示します。

メモメモ:

この記事で、Windows Phone OS 7.1 について言及している箇所は Windows Phone OS 7.0 にも当てはまります。

このトピックは、次のセクションで構成されています。

Windows Phone 8 で導入された機能の強化や動作の変更によって、既存のアプリに非互換性の問題が発生する可能性があります。一部の機能と API については、互換性に影響する変更を発生させずに、Windows Phone アプリ プラットフォームで提供される Quirks モードによって、そのアプリが本来構築およびテストされた Windows Phone のバージョンに応じて、従来の動作を保ち、適切な場合その動作を適用することができます。ターゲット バージョンが Windows Phone OS 7.1 である場合、Quirks モードは Windows Phone OS 7.1 と同じ動作をエミュレートします (同じコードを使用します)。言い換えると、アプリは本来のターゲットであるランタイムでテストした場合と同じように、Windows Phone 8 でも動作します。

メモメモ:

Windows Phone OS 7.1 用に開発されたサードパーティ ライブラリを Windows Phone OS 7.1 アプリ内で使用する場合は、Quirks が活用されます。同じライブラリを Windows Phone 8 アプリ内で使用する場合は、Quirks モードを使わずに実行されます。

Windows Phone OS 7.1 をターゲットとするアプリのソース コードを Windows Phone 8 用に再コンパイルすると、Quirks モードは無効になります。この場合、アプリのターゲットは Windows Phone 8 になっているため、あらゆるケースで新しいコードが実行されます。Quirks モードは、選択や構成が可能な機能ではなく、アプリのターゲット プラットフォームに応じて自動的に適用されます。

バイナリ非互換性、つまり互換性に影響する変更がある場合は、Windows Phone OS 7.1 をターゲットとするアプリを Windows Phone 8 で実行すると、ランタイム動作の違いから、アプリは従来と同じようには動作しません。このような動作の違いは、Quirks モードの対象にはなりません。つまり、どちらのプラットフォームでも動作するようにアプリを修正する必要があります。たとえば、これらの変化には、アプリの外見がわずかに異なるだけの場合もあれば、コード実行の順序が違う場合もあります。

次の表に、Windows Phone OS 7.1 および Windows Phone 8 プラットフォーム間の互換性に影響する変更をリストします。これらについては、Quirks モードは作用しません。これらの変更の中には、Windows Phone OS 7.1 と Windows Phone 8 でアプリ動作を同じにするために、アプリの修正を必要とするものがあります。変化による影響とソース コードの修正方法については、この表の「影響」欄を参照してください。

Windows Phone 8 には多くの変更点があるため、プロジェクトのアップグレード中に何らかの問題が発生する可能性があります。プロジェクトのアップグレード時に実行する必要のある手順および発生する可能性のある問題の詳細については、「アプリ プロジェクトを Windows Phone 8 にアップグレードする方法」を参照してください。

Windows Phone 固有の機能

次の表に、コアの Windows Phone 機能の互換性に影響する変更をリストします。

機能

変更

影響/回避策

[戻る] ボタンによるナビゲーション

ユーザーがアプリ内に表示された広告をクリックし、[戻る] ボタンを 2 回連続してすばやくクリックすると、Windows Phone 8 ではアプリが終了します。Windows Phone OS 7.1 では、アプリのバック スタックを使用してナビゲートします。

これは UI 動作の変更であるため、対処方法はありません。ただし、ユーザーがアプリを予期せず終了してしまう場合に備えて、アプリが適切に廃棄されることを確認する必要があります。

バックグラウンド ファイル転送

同時転送ファイル数の制限が、5 から 25 に増加しています。

25 という上限に達しない限り、例外は発生しません。この上限に達するまで、要求を削除する必要はありません。

バックグラウンド ファイル転送

Windows Phone 8 では、アプリがフォアグラウンドにあるとき、バックグラウンド転送サービスが以下のデータ ネットワーク上で転送を行います。Windows Phone OS 7.0 では、アプリがフォアグラウンドで実行されているかどうかにかかわらず、これらのデータ ネットワーク上で転送は行われません。

  • 2G

  • EDGE

  • Standard

  • GPRS

Windows Phone 8 では、アプリがフォアグラウンドにないとき、これらのネットワーク上で転送は行われません。この制限は HttpWebRequest オブジェクトにより共有されるため、独自の転送を実行してもバックグラウンド転送を使用する以上の利点はありません。3G 以上のネットワークでは、その他の条件がすべて満たされている場合、アプリがフォアグラウンドで動作しているかどうかにかかわらず、Windows Phone 8 と Windows Phone OS 7.1 の両方でバックグラウンド転送が続行されます。

バックグラウンド転送は Windows Phone 8 で発生しますが、Windows Phone OS 7.1 では発生していませんでした。両方のプラットフォームを対象にする場合は、そのことをコードで考慮する必要があります。

セレクター

以前は、セレクターへのナビゲーションが既に行われているときにセレクターの Show メソッドを呼び出すと、例外がスローされました。現在は Show の 2 回目の呼び出しが通知なしで失敗します。

セレクターの Show メソッドの呼び出しを try ブロックに記述する必要はありません。

CompassReading

CompassReading 構造体の TrueHeading プロパティと MagneticHeading プロパティは double 型の値を返します。Windows Phone OS 7.1 では、これらの返される double 値は 122.0 度などのように、精度に欠けています。Windows Phone 8 では、これらのプロパティから返される double 値は、122.12345 度などのように正確です。

たとえば、double 型の値を文字列に変換してから double 型の値に再変換する場合など、値を操作または変換するときに精度を切り捨てないようにしてください。

デジタル著作権管理 (DRM)

Windows Phone 8 では、アプリが DRM ビデオをテクスチャとして正常に使用することはできません。既定でビデオが黒く表示されます。Windows Phone OS 7.1 以前のバージョンでは、DRM で保護されたビデオは合成のためのテクスチャとしてアクセスすることができます。ビデオはシーン内の他のテクスチャ コンテンツと同様に構成されます。標準のビデオ オーバーレイ コントロールは影響を受けません。コンポジターが各フレームを適切にブレンドします。

フレームを表示する唯一の方法は、オーバーレイ サーフェイスとして描画するためにフレームをコンポジターに渡すことです。次の各ケースでは、オーバーレイを通じてビデオを表示することはできません。

  • カーディナル回転なし (0、90、180、270 以外の角度)

  • 部分透明

  • 3D 投影 (ビデオを含む、動くオブジェクト)

FM ラジオ

Windows Phone 8 は FM ラジオ機能をサポートしていません。FM ラジオ API を Windows Phone 8 アプリ内で使用すると、RadioDisabledException が発生します。

FM ラジオ API の呼び出しを行うアプリの場合は、アプリが動作している電話の OS バージョンを検出し、デバイスが Windows Phone 8 電話である場合は、アプリの API 呼び出し部分を無効にします。そうしないと、例外が発生します。例外の処理に失敗したアプリは、予期せず終了します。

LayoutUpdated イベント

イベントの順序付けは、Windows Phone OS 7.1 と Windows Phone 8 で厳密に同じではありません。このため、LayoutUpdated イベントが Windows Phone 8 で初めて発生したときに、この最初のイベントは、正しい寸法を持ちません。2 回目に発生したとき、寸法は正確になります。

LayoutUpdated で寸法を使用する場合、最初に ActualWidthActualHeight が 0 より大きく有効であることを確認することによって、この違いを回避できます。この違いを処理するコード例については、LayoutUpdated イベントのトピックを参照してください。

ListBox コントロール

Windows Phone 8 プロジェクトで作業している場合、ツールボックスに ListBox コントロールは表示されません。Windows Phone 8 アプリ内に項目のリストを表示する場合は、LongListSelector コントロールが推奨されます。

ListBox コントロールは XAML エディターで手動で追加できます。あるいは、LongListSelector コントロールを使用します。

ローカル データベース

Windows Phone 8 では、インストール フォルダーにアクセスする場合を除き、従来のように読み取り専用の接続文字列を使用して、分離ストレージ内のローカル データベースにアクセスすることはできません。

読み取り専用の接続文字列を使用して、分離ストレージ内のローカル データベースにアクセスを試みると、NotSupportedException が発生します。

ManipulationCompleted イベント

Windows Phone 8 で、LongListSelectorPanorama、または Pivot コントロールの ManipulationCompleted イベントを処理しようとしても、イベント ハンドラー コードは動作しません。Windows Phone OS 7.1 では、イベント ハンドラー コードは動作します。

Windows Phone 8 では、LongListSelectorPanorama、および Pivot はフレームワークの一部です。UI の応答性を高めるため、Windows Phone 8 で、ManipulationCompleted イベントは処理済みとしてマークされます。

Windows Phone 8 および Windows Phone OS 7.1 で、ManipulationCompleted イベントを処理する必要がある場合は、AddHandler メソッドを使用します。詳細については、ManipulationCompleted イベントのトピックを参照してください。

MessageBox.Show(String) および

MessageBox.Show(String, String, MessageBoxButton)

アプリの Activated および Launching イベント ハンドラーから Show(String) メソッドを呼び出すと、"MessageBox の表示エラー" のメッセージと共に InvalidOperationException がスローされます。

Show(String) メソッドは、OnNavigatedTo(NavigationEventArgs) メソッドから呼び出してください。

MessageBox.Show(String) および

MessageBox.Show(String, String, MessageBoxButton)

Windows Phone 8 では、OnBackKeyPress(CancelEventArgs)Show または BackKeyPress イベントのハンドラーを呼び出した場合、アプリが終了します。

この問題を回避するには、以降の手順で説明する別のスレッドで Show を呼び出します。

  1. BackKeyPress をオーバーライドするか、BackKeyPress イベントのハンドラーを作成します。

  2. 戻るキーを押すアクションをキャンセルするため、Canceltrue に設定します。

  3. MessageBox を表示するメソッドをディスパッチします。

  4. ユーザーがアプリから離れることを選択した場合は、Terminate() を呼び出します。それ以外の場合は、何も行いません。

MessageBox コントロール

MessageBox コントロールのスペーシング、マージン、および埋め込みが Windows Phone 8 で更新されました。

スペーシング、マージン、および埋め込みが変更されたことで、アプリ内のコントロールのレイアウトが影響を受ける可能性があります。Windows Phone 8 で MessageBox コントロールを使用する Windows Phone OS 7.1 アプリをテストして、外観に変化がないことを確認します。

Microsoft.Phone.Media.Extended アセンブリ

Windows Phone OS 7.1 電話デバイスの ROM に出荷時実装されている Microsoft.Phone.Media.Extended アセンブリは、Windows Phone 8 電話にはありません。

このアセンブリの API にアクセスするリフレクションを使用している場合、これらはパブリックに公開されていないので、そのアプリは Windows Phone 8 デバイスでエラーを引き起こす可能性があります。このアセンブリへの呼び出しを削除し、パブリックに公開されているメディア API を使用してください。

Networking (ネットワーク)

Windows Phone 8 では、Windows Phone 8 クライアントが Vary ヘッダーを処理して応答をキャッシュすることが可能です。そのため Web サービスの呼び出しは、従来のバージョンよりもはるかに速く処理される可能性があります。

この変更の影響は最小限です。ただし、Web サービスを呼び出す場合、コードではダウンロードが 1 秒以上かかることを前提としてはなりません。応答時間は 1 秒未満と考えられるため、ミリ秒と浮動小数点数を使用して応答時間をチェックする必要があります。

Panel コントロール

Windows Phone 8 では、Panel から派生するコントロール (CanvasGridLengthStackPanel など) の高さが 2560 より大きい場合、背景が黒以外の色に設定されていても、Background ブラシが黒に設定されます。

この問題の対処方法はありません。

写真セレクター タスク

Windows Phone 8 では、写真セレクター タスクによって、アプリの分離ストレージの最上位に "PlatformData" という名前のディレクトリが作成されます。

Windows Phone 8 が動作する電話に配置した Windows Phone OS 7.1 をターゲットとするアプリまたは Windows Phone 8 をターゲットとして作成した新しいアプリが、写真セレクター タスクを使用するとします。このアプリが分離ストレージのコンテンツを反復処理するときに、システムによって作成されたディレクトリをスキップしたい場合は、"PlatformData" と "Shared" をスキップします。

システム トレイの ProgressIndicator

Windows Phone OS 7.1 では、システム トレイ上の進行状況インジケーターを更新するコードは同期的です。Windows Phone 8 では、進行状況インジケーターを更新するコードは非同期的です。

場合によっては、この変更により Windows Phone 8 のシステム トレイに進行状況インジケーターが表示されないことがあります。たとえば、ProgressIndicator クラスを使用して進行状況インジケーターを設定し、直ちに UI スレッドをブロックする (リソースを大量に消費する作業を行うなど) 場合、進行状況インジケーターは表示されなくなります。これは、システムが進行状況インジケーターの更新要求を処理できなくなったためです。

この問題には、1 つの対処方法が考えられます。短いタイムアウトと無制限の期間を指定してタイマーを使用している場合は、タイマーのコールバック内で Dispatcher.BeginInvoke を呼び出して、リソースを大量に消費する作業のスケジュールを指定します。これにより、リソースを大量に消費する作業が開始する前にメッセージ キューを処理できるようになり、進行状況インジケーターの更新が有効になります。

SSL (Secure Sockets Layer)

アプリが Web サービスや Web サイトに対して SSL 要求を行うときに、Windows Phone 8 をターゲットとするアプリはサイトの証明書の発行者にセキュリティ証明書失効リストを問い合わせます。この Windows Phone 8 アプリによる追加のネットワーク要求により、SSL 要求に必要な時間は長くなります。証明書失効リストを時間内に受け取れない場合、とりわけネットワーク接続が低速であったり信頼性に欠けるネットワークを経由する SSL 要求は時間切れになる可能性があります。

アプリがタイムアウトの可能性に対応する、要求を再試行する、または要求したデータがなくても続行できるようにしてください。

Slider コントロール

Windows Phone 8 では、Slider コントロールとその API は大幅に変更されました。

HorizontalLargeIncreaseHorizontalLargeDecreaseHorizontalThumbVerticalLargeIncreaseVerticalLargeDecrease、および VerticalThumb はコントロール テンプレートから削除されています。

これらに対応する新しいテンプレートの部分は、HorizontalFillHorizontalTrackHorizontalCenterElementVerticalFillVerticalTrack、および VerticalCenterElement です。新しいテンプレートの部分の型はすべて FrameworkElement です。

Windows Phone 8 にアップグレードしているアプリで Slider コントロールのテンプレートの再設定を行った場合、コントロール テンプレートを変更して、削除または追加したテンプレートの部分を処理しなければならないことがあります。

TextBox コントロール

Windows Phone 8 では、AcceptsReturn プロパティの値が false であるとき (TextBox が複数行の TextBox ではない場合) に TextBox での Enter キーによって発生したイベントの動作が異なります。Windows Phone OS 7.1 を対象とするアプリでは、TextBox によって処理されない Enter キーの押下で TextInput イベントが発生します。Windows Phone 8 を対象とするアプリでは、このような Enter キーの押下で TextInput イベントは発生しません。

Windows Phone 8 を対象とするアプリでは、TextBox によって処理されない Enter キーの押下をキャプチャするために KeyDown イベントを処理します。

タイル

Windows Phone 8 では、Closing ハンドラーの内部で Create(Uri, ShellTileData) メソッドを使用してタイルを作成すると、InvalidOperationException がスローされます。

アプリ プロジェクトの別の場所で Create(Uri, ShellTileData) メソッドを使用してください。

UIElement テキスト入力イベント

Windows Phone 8 では 、TextInputTextInputStart、および TextInputUpdate の各イベントが発生していましたが、Windows Phone OS 7.1 では発生しません。

テキスト入力イベントによってテキスト コントロール内の変化を検出することはできません。テキストの変化を検出するには、代わりに KeyDown イベントを使用します。

VibrateController コントローラー

Windows Phone OS 7.1 では、VibrateControllerStop() メソッドを事前に呼び出さずに Start(TimeSpan) メソッドを呼び出した場合、電話やトースト通知など他のアプリによって開始される振動を含め、すべての振動がすべてキャンセルされました。Windows Phone 8 では、VibrateControllerStop() メソッドを事前に呼び出さずに Start(TimeSpan) メソッドを呼び出しても、何も起こりません。例外は発生しません。

この問題に必要とされる対処方法はありません。

ビデオ再生

Windows Phone 8 では、電話をロックし、ロック解除した後のビデオ再生の再開が変更されています。Windows Phone OS 7.1 では、ビデオが一時停止の状態で開き、イメージが表示されます。Windows Phone 8 では、ビデオが一時停止の状態で開きますが、ビデオ フレームの代わりに空の黒いボックスが表示されます。いずれの場合も、ビデオを再開するには [再生] をクリックする必要があります。

この問題は UI エクスペリエンスの変更であるため、対処方法はありません。

WebBrowser コントロール

Web ブラウザー コントロールに関連付けられている UserAgent 文字列が、Windows Phone OS 7.1 と Windows Phone 8 では多少変更があります。

UserAgent 文字列の完全一致を検索せず、代わりに大まかな一致を検索してください。

WebBrowser コントロール

WebBrowser コントロールには、アプリ内でのコンテンツの表示方法に影響する変更がいくつか加えられています。WebBrowser コントロールを使用しているアプリは、Windows Phone 8 では Windows Phone OS 7.1 と同じようには表示されない可能性があります。

Windows Phone 8 エミュレーターやデバイスにアプリを配置してテストする必要があります。WebBrowser 内のテキスト、箇条書き項目、およびドロップダウン矢印の外観上の変化を探し、そのような変化がアプリの使いやすさに影響するかどうかを確認してください。

WebBrowser コントロール

スクロール時の WebBrowser コントロールの動作が異なっている場合があります。WebBrowser コントロールを使用しているアプリは、Windows Phone 8 では Windows Phone OS 7.1 と同じスクロール動作を示さない可能性があります。

WebBrowser でスクロールをテストし、違いがアプリの操作性に影響するかどうか判断してください。

WebBrowser コントロール

WebBrowser コントロールに表示されるコンテンツがページ スケール ビューポート設定 (<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"/> など) を使用する場合、レイアウトが異なる可能性があります。Windows Phone OS 7.1 では、WebBrowser コントロールは、レイアウトの描画時にページ スケール ビューポート設定を考慮していません。Windows Phone 8 では、WebBrowser コントロールは、レイアウトの描画時にページ スケール ビューポート設定を使用します。

ページ スケール ビューポート設定を指定する場合、アプリのレイアウトの違いをテストする必要があります。

WebBrowser コントロール

Window.External オブジェクトの ScriptNotify メソッドを使用した OnContextMenu の呼び出しは Windows Phone 8 ではサポートされていません。

Windows Phone 8 にコンテキスト メニューを表示するには、OnMSGestureHold イベントを使用します。

WebBrowser コントロール

Windows Phone 8 では、点滅するカーソルはテキスト フィールドに表示されない場合があります。

回避策はありません。テキスト フィールドは想定どおり動作します。

XNA

Game.IsActive プロパティが設定されるタイミングの変更が原因で、ゲームが想定どおりに再開されない場合があります。

Windows Phone アプリを Windows Phone 8 上でテストします。まず、ゲームを実行し、ゲームの実行中にデバイスをロックします。次にデバイスをロック解除して、デバイスが正常に再開されるかどうかを確認します。正常に再開されない場合は、ゲームを一時停止する前の Game.IsActive プロパティをチェックする場所を調整します。

XNA

Windows Phone 8 では、次のレンダリング形式がサポートされません。

  • SurfaceFormat.Bgra4444

  • SurfaceFormat.Bgra5551

これらの形式を使用した場合、既定で SurfaceFormat.Color に設定されます。

XNA TouchPanel

Windows Phone OS 7.1 アプリでは、TouchPanel API は、物理ピクセルを表すサイズ情報を返します。Windows Phone 8 アプリでは、TouchPanel API は、論理ピクセルを表すサイズ情報を返します。これは Windows Phone 8 で複数の解像度がサポートされているためです。

異なる解像度でアプリをテストして、サイズ、位置、およびヒット ターゲットが想定どおりに動作することを確認する必要があります。

共通言語ランタイム

次の表に、Windows Phone OS 7.1 プラットフォームと Windows Phone 8 プラットフォームの間で発生する共通言語ランタイムのアプリ互換性の問題をリストします。

機能

変更

影響/回避策

終了処理

Windows Phone 8 に含まれるガベージ コレクターは、Windows Phone OS 7.1 とは完全に異なります。

特定の順序に従ったオブジェクト終了処理に依存しているコードは、エラーになる可能性があります。特定の順序に従った終了処理への依存は、なくす必要があります。さらに、ユーザー定義のファイナライザーのコードでは、マネージ データ メンバーへの呼び出しを実行しないようにしてください。

浮動小数点数の比較

Windows Phone OS 7.1 と Windows Phone 8 の丸め動作の違いから、浮動小数点数値に差が生じる可能性があります。定数と浮動小数点数の使用結果との等値比較では特に、その傾向があります。

一般に、浮動小数点数の使用結果との直接的な比較は、推奨できません。

複数モジュール アセンブリの読み込みのサポート

Windows Phone OS 7.1 では、共通言語ランタイムによって複数モジュール アセンブリが読み込まれます。Windows Phone 8 では、読み込まれません。

複数モジュール アセンブリとは、複数のファイルに格納されたマネージ アセンブリです。複数モジュール アセンブリはめったに使用されないため、この変更によって生じる互換性の問題はごくわずかです。複数モジュール アセンブリは、1 つのアセンブリにコンパイルされた .NET モジュール ファイルではない点に注意してください。

混合モード アセンブリ (.NET Framework のデスクトップ バージョンをターゲットとするアセンブリ) の追加のサポート

Windows Phone OS 7.1 では、読み込まれない混合モード バイナリを使用したアプリでも、正常に実行されます。Windows Phone 8 では、正常に実行されません。

Windows Phone 8 で正常に実行するには、アプリから混合モード バイナリを削除する必要があります。

スレッド (.NET スレッド プール、.NET スレッド スケジュール設定ポリシー、OS スケジュール設定ポリシー)

Windows Phone OS 7.1 では、アプリは単一のコアで動作します。単一コアの場合、タイム スライス スレッドのスケジューラは、それほどアグレッシブではありません。Windows Phone 8 では、複数のコアでアプリケーション実行が可能であり、タイム スライド スレッドのスケジューラはよりアグレッシブです。

Windows Phone 8 では競合状態などの同時実行バグが Windows Phone OS 7.1 よりも起こりやすくなります。この問題に対処するには、開発者がマルチスレッド コードを正しく記述する必要があります。

共通中間言語 (CIL) メソッドのサイズ

Windows Phone 8 では、メソッドの CIL サイズに関して 256 KB の制限があります。

Windows Phone OS 7.1 でアプリのインストールが成功しても、Windows Phone 8 では失敗する可能性があります。この影響が出るアプリは、非常に少数です。

プライベートな入れ子のクラスへのアクセス

Windows Phone OS 7.1 では、クラスがプライベートな入れ子のクラスにアクセスできます。Windows Phone 8 では、アクセスできません。

プライベートな入れ子のクラスへのアクセスは、サポートされていません。

メソッド ボディ内で this ポインターにアクセスせず、静的メンバーを呼び出すだけの、任意のインライン可能な封印済みのインスタンス メソッド。

このメソッドの呼び出しは、Windows Phone 8 では NullReferenceException をスローします。Windows Phone OS 7.1 では、実行時に静的メソッドを呼び出すことはできますが、マネージ デバッガーでは NullReferenceException がスローされます。

この動作は CLI 仕様に準拠しています。null 参照でのメソッド呼び出しによって発生する NullReferenceException を処理する必要があります。そうでない場合、null オブジェクトでインスタンス メソッドを呼び出してはなりません。

インスタンス フィールドの読み取りと書き込み

インスタンス フィールドの読み取りは、JIT コンパイラによって最適化されます。

個別のスレッドのインスタンス フィールドの書き込みまたは読み取りを実行するアプリケーションでは、エラーが発生する可能性があります。このようなフィールドには、C# の volatile キーワードでマークする必要があります。

.NET Framework クラス ライブラリ

次の表に、Windows Phone OS 7.1 プラットフォームと Windows Phone 8 プラットフォームの間で発生する .NET Framework のアプリ互換性の問題をリストします。

機能

変更

影響/回避策

Array.GetLowerBound(Int32) メソッド

dimension パラメーターが Array.Rank に等しい場合、Windows Phone OS 7.1 では 0 が返され、Windows Phone 8 では IndexOutOfRangeException 例外がスローされます。

IndexOutOfRangeException は、文書化された動作です。Windows Phone OS 7.1 の動作に依存しているアプリの場合、この例外を処理する必要があります。

Double.NaN または Single.NaN の整数への変換

Windows Phone OS 7.1 と Windows Phone 8 とで、結果の整数値が異なります。

CLI 仕様により、変換の結果は不定です。

Monitor.Enter および Monitor.Wait

インスタンス フィールドにモニター ロックを設定した後、ユーザー コードでこのフィールドを新しい値に置き換えます。タイミングによっては、他のスレッドがこのフィールドのロックまたはパルスを試みている場合があり、ロックが設定されていないオブジェクトを、そのスレッドが操作している可能性があります。

これらのメソッドの不正な使用により、デッドロック、例外、または一貫性のない状態変更が発生する可能性があります。この問題を回避するには、別のオブジェクトを同期に使用します。

Type.BaseType プロパティ

Windows Phone OS 7.1 では、このプロパティは一般的な型定義を返します。Windows Phone 8 では、このプロパティは一般的な型引数を反映します。

この変更の影響は最小限です。

Type.GetMember メソッド

コンストラクターを返すには、Windows Phone OS 7.1 は文字列パラメーターがクラス名で同じであることを前提とします。Windows Phone 8 では文字列パラメーターが ".ctor" であることが前提になります。

この変更の影響は最小限です。

Type.GetType メソッド

型名に無効な文字が含まれている場合、Windows Phone OS 7.1 は TypeLoadException 例外をスローするのに対し、Windows Phone 8 は ArgumentException 例外をスローします。

この変更の影響は最小限です。

Environment.SpecialFolder.Favorites 列挙メンバー

この列挙メンバーの値は、Windows Phone OS 7.1 では 22、Windows Phone 8 では 6 です。

ユーザー コードでこの引数を必要とするメソッドを呼び出すことはできないため、この変更による影響はありません。

IsolatedStorageFile ファイル名と IsolatedStorageFile.GetFileNames メソッド

Windows Phone OS 7.1 では、ファイル名はドット (".") で終わることができ、GetFileNames("*.") はドットで終わるファイル名だけを取得します。Windows Phone 8 では、この操作では例外がスローされます。

ファイル名を変更して、ドットでは終わらないようにしてください。GetFiles("*") を呼び出して、すべてのファイルを取得します。

IsolatedStorageFile.GetFileNames(String) メソッド

返される配列内のファイルの順序が、Windows Phone OS 7.1 と Windows Phone 8 で違っている場合があります。

特定の順序にアプリが依存している場合、エラーが発生する可能性があります。ファイル システムにおける並び順は保証されない点に注意してください。

FileShare.None で開かれたストリームを使用する IsolatedStorageFileStream

ガベージ コレクションの違いにより、厳密な参照をすべて解放する前に、ストリームの Dispose を呼び出していない Windows Phone OS 7.1 コードは、ガベージ コレククションの対象にならず、タイムリーに終了処理が行われません。その結果、そのファイルに対して他のストリームを開けなくなる可能性があります。

アプリケーションで using ステートメントを使用して、オブジェクトが正常に破棄されるよう保証する必要があります。

System.Reflection.Emit.ILGenerator.syncObj フィールド

Windows Phone OS 7.1 では、syncObj は保護された内部フィールドです。このフィールドは Windows Phone 8 には存在しません。

この変更による影響はありません。

Mutex クラス

Windows Phone OS 7.1 で、1 つのプロセスが共有ミューテックスを保持したまま終了すると、別のプロセスがそのミューテックスを取得できます。Windows Phone 8 では、例外がスローされます。

この変更の影響は最小限です。この変更に対処するには、最初のプロセスでミューテックスを破棄できないようにするか、または 2 番目のプロセスがミューテックスの取得を試みたときスローされる例外を処理できるようにします。

ParameterBuilder.SetCustomAttribute(ConstructorInfo, Byte[]) メソッド

このメソッドは、Windows Phone 8 のユーザー コードでは使用できません。

この変更の影響は最小限です。Windows Phone OS 7.1 では、この属性は DynamicMethod クラスを通じてのみ使用可能であるため、この属性を利用するケースは限られています。

Single による計算の精度

Windows Phone OS 7.1 では、複雑な浮動小数点計算の中間結果に、より高い倍精度が使用されます。ARM システムの Windows Phone 8 では、より低い精度が使用されます。

状況によっては、Single 値を使用した浮動小数点計算の結果が、Windows Phone OS 7.1 と Windows Phone 8 で異なる場合があります。そのような場合は、明示的に Double にキャストしてから計算を実行してください。

URI の BitmapImage 要求によって設定される Referer ヘッダー値

Windows Phone OS 7.1 では、URI の BitmapImage 要求によって設定される Referer ヘッダー値は、file:///Applications/Install/<GUID>/Install/ という形式でアプリのインストール ディレクトリを参照します。

Windows Phone 8 (8.0.10322.0) 以前にリリースされたバージョンの Windows Phone では、Referer ヘッダー値は、別の形式でアプリのインストール ディレクトリを参照します。これは、Windows Phone OS 7.1 および Windows Phone 8 の両方を対象とするアプリの場合に発生します。

この問題は、Windows Phone 8 (8.0.10322.0) で解決されました。

  • Windows Phone OS 7.1 を対象とするアプリの場合、Referer ヘッダー値は Windows Phone OS 7.1 と同じです。

  • Windows Phone 8 を対象とするアプリの場合、Referer ヘッダーは送信されません。この動作は、WebClient の Windows Phone 8 クラスの動作と一致しています。

Referer ヘッダーの値に依存するアプリケーションは破損する可能性があります。

この問題を回避するには、Referer ヘッダーにカスタム値を指定します。1 つの対策については、「WP7 Mango: カスタム Referer ヘッダーのイメージ ダウンロード」を参照してください。

String.GetHashCode

Windows Phone OS 7.1 と Windows Phone 8 は、同じ文字列に対して異なるハッシュ コードを返します。

特定の文字列に対する特定のハッシュ コードに依存しているアプリケーションでは、エラーが発生する可能性があります。

Type.GetProperties

返される PropertyInfo 配列内のプロパティの順序が異なります。

シリアル化コードのように、配列内の要素が固定された順序であることに依存しているコードは、アプリケーションでエラーが発生する可能性があります。開発者は、プロパティの並び順への依存をなくす必要があります。

WaitHandle.WaitAll メソッド

このメソッドは Windows Phone 8 ではサポートされていますが、Windows Phone OS 7.1 では NotSupportedException 例外をスローします。

この変更が影響を及ぼすのは、アプリ コードが NotSupportedException 例外の処理に依存している場合という、ありそうもない状況です。

XmlSerializer

XmlSerializer クラスは、Windows Phone OS 7.1 と Windows Phone 8 における有効な入力に関して、異なる規則を持ちます。このような違いのいくつかは Quirks モードで調整されます。「.NET Framework における Quirks モードの動作」を参照してください。

Windows Phone 8 をターゲットとして再コンパイルするソース コードで XmlSerializer を使用するには

  1. Value プロパティから XmlAttributeAttribute 属性を削除します。

  2. 次の例に示すとおり、XML の値を属性から要素に変更します。

    <SerializedClass>

    <Value>42</Value>

    </SerializedClass>

XmlSerializer.Deserialize(TextReader)

textReader 引数が null である場合、このメソッドは Windows Phone 8 では ArgumentNullException 例外をスローし、Windows Phone OS 7.1 では InvalidOperationException をスローします。

null がメソッドに渡されている場合、ArgumentNullException 例外の処理が必要です。

XmlSerializer.Serialize(TextWriter, Object) および XmlSerializer.Serialize(TextWriter, Object, XmlSerializerNamespaces)

textWriter 引数が null である場合、このメソッドは Windows Phone 8 では ArgumentNullException 例外をスローし、Windows Phone OS 7.1 では NullReferenceException をスローします。

null がメソッドに渡されている場合、ArgumentNullException 例外の処理が必要です。

以下の各セクションでは、Windows Phone の共通言語ランタイム機能および .NET Framework における Quirks モード動作について説明します。

共通言語ランタイム

次の表に、共通言語ランタイムにおける Quirks モード動作をリストします。

機能または領域

Windows Phone 8 の動作

Quirks モード動作

アセンブリ バインディング: カルチャ

アプリ アセンブリのカルチャがニュートラルであることが、バインダーによってチェックされます。

バインダーがバインドできるのは、カルチャ固有のリソースのあるアセンブリだけです。

アセンブリ バインディング: バージョン番号

署名されていないアセンブリは、アセンブリ バインドにバージョン番号を使用します。

バージョン番号は無視されます。

Just-in-time (JIT) インライン

JIT コンパイラは、Windows Phone 8 固有のインラインに関して一連のルールに従います。

JIT コンパイラは、Windows Phone OS 7.1 が使用する一連のルールに従います。

クラスごとの静的データに対するメモリの割り当て

クラスごとの静的データの合計サイズについては、制限はありません。

1 つのクラスの静的データが 64K を超えると、ランタイムによって TypeInitializationException 例外がスローされます。

ランタイム ローダーの動作: 可視性の異なる値型のフィールドの重複

重複する値型のフィールドの可視性が異なる場合、ローダーは TypeLoadException 例外をスローします。

ローダーは、可視性の異なる値型のフィールドの重複を認めます。

ランタイム ローダーの動作: x86 固有のイメージ

x86 固有の共通中間言語 (CIL) イメージは、ARM システムに読み込むことができません。

x86 固有の CIL イメージは、ARM システムに読み込むことができます。

ランタイム ローダーの動作: 型定義の一意性

重複する型定義は指定できません。Windows Phone OS 7.1 コードを正常に再コンパイルして実行するには、オブファスケーターを変更するか、または暗号化コードを使用しないようにします。

オブファスケーターによって生成される重複する型定義は、反復処理が可能です。

ランタイム ローダーの動作: スタティック フィールドの無効なカスタム属性

ランタイムは BadImageFormatException をスローします。

無効な属性を無視してください。

TypeAttributes.BeforeFieldInit フラグのある静的コンストラクター

コンスラクターの実行が遅延します。

コンスラクターの実行は遅延しません。

.NET Framework クラス ライブラリ

次の表に、.NET Framework クラス ライブラリの型およびメンバーの Quirks モード動作をリストします。

型またはメンバー

Windows Phone 8 の動作

Windows Phone OS 7.1 の Quirks モード動作

Activator.CreateInstance メソッドへの配列型の引き渡し

このメソッドは MissingMethodException 例外をスローします。

メソッドは長さ 0 の配列を返します。

Array.BinarySearch<T>(T[], T)Array.Sort<T>(T[])Array.Sort<TKey, TValue>(TKey[], TValue[], Int32, Int32, IComparer<TKey>)

Windows Phone 8 独自のソート アルゴリズムを使用します。

Windows Phone OS 7.1 独自のソート アルゴリズムを使用します。

Assembly.FullName プロパティ

null 名の場合、このプロパティは String.Empty を返します。

このプロパティは完全修飾の型名を返します ("System.Reflection.AssemblyName")。

Assembly.GetType メソッド

このメソッドは、メソッドの呼び出し対象のアセンブリ内でのみ、指定された型を検索します。

このメソッドは、メソッドの呼び出し対象のアセンブリおよび mscorlib.dll で、指定された型を検索します。

Assembly.GetType メソッドと Module.GetType メソッド

型名に完全修飾アセンブリ名を含めることはできません。

型名に完全修飾アセンブリ名を含めることができます。

Load メソッド

アセンブリ名に含まれるアポストロフィ (')、引用符 (")、コンマ (,)、等号 (=) などの特殊文字は、エスケープする必要があります。そうしないとアセンブリを読み込むことができず、例外がスローされます。

エスケープしない特殊文字をアセンブリ名に含めることができます。

Load

アセンブリの修飾名は、先頭を "+" にすることはできません。

アセンブリの修飾名は、先頭を "+" にすることができます。

AssemblyName.GetPublicKey メソッド

パブリック キーのないアセンブリの場合、このメソッドは null を返します。

このメソッドは Byte[0] を返します。

IComparable を実装し、その基本クラスが IComparable<T> (ここで T は基本クラス) を実装する派生クラスに対する Array.Sort メソッドなどの比較演算。

基本クラス CompareTo(T) の実装が呼び出されます。

派生クラス CompareTo(Object) の実装が呼び出されます。

element 引数が PropertyInfo 型で、inherit 引数が true に等しい Attribute.GetCustomAttribute(MemberInfo, Type, Boolean) および Attribute.GetCustomAttributes(MemberInfo, Boolean) の呼び出し

このメソッドは、属性に対するパブリックおよび非パブリックの親プロパティを検索します。

このメソッドは、属性に対するパブリックの親プロパティのみを検索します。

CompilationRelaxations.NoStringInterning 列挙メンバーを使用する CompilationRelaxationsAttribute 属性

この属性は、アセンブリ内の文字列リテラルをインターン処理してはならないことを表します。

この属性は無視されます。

ConstructorInfo.Invoke メソッド

オープン ジェネリック型のコンストラクターを呼び出そうとすると、MemberAccessException 例外がスローされます。

メソッド呼び出しは、ArgumentException 例外をスローします。

Convert.FromBase64CharArray メソッド

inArray パラメーターが長さ 0 の文字配列である場合、このメソッドは FormatException 例外をスローします。

このメソッドは、空白のバイト配列 (長さ 0 のバイト配列) を返します。

CultureInfo.CultureInfo(String) メソッド

カルチャ名が無効の場合、コンストラクターは ArgumentException 例外をスローします。

コンストラクターの呼び出しは、PlatformNotSupportedException 例外をスローします。

CultureInfo.CultureInfo(String) メソッド

iw および tl は無効なカルチャ名です。

iw および tl は有効なカルチャ名であり、それぞれ he (ヘブライ語) および fil (フィリピノ語) カルチャと同等です。

CultureInfo.CultureInfo(String) メソッド

bn (ベンガル語)、bn-BD (ベンガル語 (バングラデシュ))、および bn-IN (ベンガル語 (インド)) カルチャがサポートされます。

bn、bn-BD、および bn-IN カルチャがサポートされないため、コンストラクターは例外をスローします。

CultureInfo.InvariantCulture.DisplayName プロパティ

このプロパティは "インバリアント言語 (ロケールに依存しない国)" を返します。

このプロパティは "インバリアント言語" を返します。

Attribute.IsDefined メソッドや GetCustomAttributes メソッドの呼び出しなど、カスタム属性のデータの取得

属性の型が読み込めない場合、このメソッドは例外をスローします。

メソッド呼び出しが無視されます。

DataContractSerializer クラス

XML 要素はアルファベット順にソートする必要があります。

XML 要素は順序なしでかまいません。

DateTime.Now.TimeOfDay.TotalMillisecond プロパティ

値は 100 ナノ秒以内の精度です。

値は 1 ミリ秒以内の精度です。

属性 DebuggableAttribute

この属性はランタイムに対し、デバッグ情報を提供するためモジュール内のコードに特殊な取り扱いをするよう指示します。

この属性は無視されます。

Delegate.CreateDelegate メソッド

不正な引数を使用してデリゲートを作成しようとすると、MissingMethodException 例外がスローされます。

このメソッドは null を返します。

Delegate.CreateDelegate メソッド

非ジェネリック型でジェネリック メソッドへのデリゲートを作成しようとすると、ArgumentException 例外がスローされます。

このメソッドは MissingMethodException 例外をスローします。

Enum.IsDefined メソッド

value 引数が整数型または文字列ではない場合、このメソッドは InvalidOperationException 例外をスローします。

このメソッドは ArgumentException 例外をスローします。

例外フィルター

フィルターの最後の単一の終了フィルター (OpCodes.Endfilter) 命令がサポートされるか、または InvalidProgramException 例外がスローされます。

フィルターの最後に複数の終了フィルター命令を使用できます。これらの命令は通常、オブファスケーターによって生成されます。

FieldInfo.GetValue メソッドと FieldInfo.SetValue メソッド

null 値で表されるオブジェクトのインスタンス フィールドの値を取得または設定しようとすると、TargetException 例外がスローされます。

メソッド呼び出しは、ArgumentNullException 例外をスローします。

FieldInfo.ToString メソッド

Boolean フィールドについて、戻り値は "Boolean" です。Int32 フィールドについて、戻り値は "Int32" です。

Boolean フィールドについて、戻り値は "System.Boolean" です。Int32 フィールドについて、戻り値は "System.Int32" です。

FileLoadException.Data プロパティ

返される IDictionary オブジェクトには HRESULT は含まれません。

返される IDictionary オブジェクトには、HResult という名前の HRESULT が含まれます。

IsolatedStorageFile.FileExists(String) メソッド

null が渡された場合、このメソッドは ArgumentNullException 例外をスローします。

このメソッドは false を返します。

IsolatedStorageFile.GetFileNames(String) メソッドと IsolatedStorageFile.GetDirectoryNames(String) メソッド

searchPattern パラメーターは、ワイルドカード文字を使用したリテラル文字列で構成され、メソッドは標準のファイル比較を実行します。

このメソッドは、従来のバージョンの Windows Phone と同様に、searchPattern を使用してファイルを比較します。

IsolatedStorageFile および IsolatedStorageFileStream クラス

存在しないパス、または 1 つ以上のサブディレクトリが欠けているパスに対して処理を実行しようとした場合、IsolatedStorageException 例外がスローされます。

このようなパスに対して処理を実行しようとした場合、DirectoryNotFoundException 例外がスローされます。

MethodInfo.Invoke メソッド

呼び出されたメソッドのパラメーターに既定値がない場合、ArgumentException 例外がスローされます。

例外はスローされません。

Mutex クラス

ミューテックス名の中にはバックスラッシュ文字は使用できません。

ミューテックス名の中でバックスラッシュ文字を使用できます。バックスラッシュは実行時に別の文字に置き換えられます。

属性 NeutralResourcesLanguageAttribute

アプリケーション用の既定のリソースを提供するカルチャを定義します。

この属性は無視されます。インバリアント カルチャは、アプリケーション用の既定のリソースを提供します。

NeutralResourcesLanguageAttribute メソッド

location パラメーターは、アプリ用の既定のフォールバック リソースの場所を決定します。

location パラメーターは無視されます。

NotifyCollectionChangedEventArgs

開始インデックスが正しく更新されます。

開始インデックスは正しく更新されません。一部のコントロールがこの動作に依存しています。

NotifyCollectionChangedEventArgs.NewItems

このプロパティ値は、読み取り専用の ArrayList オブジェクトです。

このプロパティ値は Object 配列です。

ObjectDisposedException.ObjectName プロパティ

ObjectDisposedException() コンストラクターのいずれかのオーバーロードに渡されたオブジェクト名が null の場合、このプロパティは Empty を返します。

このプロパティは null を返します。

ParameterInfo.DefaultValue プロパティ

パラメーターに既定値がない場合、このプロパティは Value を返します。

このプロパティは null を返します。

GetDirectoryName(String) メソッド

このメソッドは、冗長な "."、" "、および "\" 文字を削除してパスを正規化します。

パスは正規化されません。このメソッドは、返す文字列を最大パス長と比較するだけです。

WebClient によって設定された Referer ヘッダー値

既定では、Referer ヘッダーは送信されません。Referer ヘッダーにはカスタム値を指定できます。

この動作は、Windows Phone 8 (8.0.10322.0) 以降の BitmapImage クラスの動作と一致しています。

Referer ヘッダーの値が参照するアプリのインストール ディレクトリは、file:///Applications/Install/<GUID>/Install/ という形式です。

リソースのフォールバック

既定のフォールバック カルチャは、OS によって指定されているフォールバック カルチャです。

既定のカルチャは NeutralResourcesLanguageAttribute 属性によって定義されます。

GetNeutralResourcesLanguage(Assembly) メソッド

このメソッドは、NeutralResourcesLanguageAttribute 属性によって定義されるアセンブリの既定のカルチャを返します。定義されていない場合、InvariantCulture を返します。

このメソッドは常に InvariantCulture を返します。

RuntimeHelpers.InitializeArray メソッド

暗号化された電話アプリの場合、検証に失敗します。

暗号化された電話アプリの場合、検証に成功します。

RunWorkerCompletedEventArgs.Result プロパティ

非同期操作中にエラーが発生した場合、このプロパティは TargetInvocationException 例外をスローします。TargetInvocationExceptionInnerException プロパティには、例外に関する情報が含まれます。

例外は TargetInvocationException 例外にラップされず、直接スローされます。

BeginReadBeginWriteEndReadEndWrite、およびサブクラス化されたメソッド

入出力処理は非同期で実行されます。

入出力処理は同期的に実行されます。

System.IO.StreamReader クラス

バッファー サイズを明示的に指定せずにインスタンス化されたオブジェクトは、既定のバッファー サイズ 1,024 バイトになります。

既定のバッファー サイズは 4,096 バイトです。

StreamWriter.Close メソッドと StreamWriter.Dispose メソッド

ストリームを使用して StreamWriter オブジェクトをインスタンス化すると、StreamWriter インスタンスの終了時に、基のストリームがフラッシュされて破棄されます。

基のストリームが複数の StreamWriter オブジェクトによって共有されている場合には、フラッシュおよび破棄は実行されません。

String.Replace(String, String)

埋め込みの null (U+0000) は、他の文字と同様に取り扱われます。

Windows Phone OS 7.1 では従来のバージョンに Quirks モード動作で対応し、埋め込み null の後のすべの文字がドロップしていました。この Quirks モード動作は Windows Phone 8 でも継続されています。

String.Trim

バイト オーダー マークはトリミング処理によって削除されません。

バイト オーダー マークはホワイトスペースとして取り扱われ、トリミング処理によって削除されます。

StringBuilder.Append(Char[], Int32, Int32) メソッドと StringBuilder.Append(String, Int32, Int32) メソッド

count パラメーターが 0 の場合、このメソッドは ArgumentOutOfRangeException 例外をスローします。

このメソッドは、StringBuilder インスタンスの値をそのまま返します。

SynchronizationContext.Current プロパティ

このプロパティは、スレッドごとの SynchronizationContext オブジェクトを返します。

このプロパティは、すべてのスレッドで同じ SynchronizationContext オブジェクトを返します。

Thread.CurrentCulture プロパティと Thread.CurrentUICulture プロパティ

現在のカルチャおよび現在の UI カルチャの変更は、現在のスレッドにのみ影響します。

現在のカルチャおよび現在の UI カルチャの変更は、すべてのアプリ スレッドに影響します。

TimeSpan.ToString(String) メソッドと TimeSpan.ToString(String, IFormatProvider) メソッド

format パラメーターと provider パラメーターは、カルチャに依存する結果文字列を生成します。

format パラメーターと provider パラメーターは無視されます。

Type.GetMethodType.GetMethodsPropertyInfo.GetGetMethodPropertyInfo.GetSetMethod

メソッドは、プライベートな継承メソッドは返しません。

メソッドは、プライベートな継承メソッドを返します。

Type 配列パラメーターのある Type.GetProperty メソッドのオーバーロード

配列内のいずれかの要素が null の場合、メソッドは ArgumentNullException 例外をスローします。

このメソッドは NullReferenceException 例外をスローします。

Type.GetProperty メソッドと Type.GetProperties メソッド

現在のインスタンスが、現在の型で非表示になっている基本クラスのプロパティを持ったジェネリック型である場合、このメソッドは AmbiguousMatchException 例外をスローします。

このメソッドは、このプロパティを取得します。

BindingFlags 型のパラメーターを使用する Type.GetProperty メソッドおよび Type.GetProperties メソッド。

メソッドは、基本クラスのオーバーライドされたプロパティを返しません。

メソッドは、基本クラスのオーバーライドされたプロパティを返すことができます。

Type.GetType メソッド

空の文字列を渡された場合、このメソッドは ArgumentException 例外をスローします。

このメソッドは TypeLoadException 例外をスローします。

Type.MakeByRefType メソッドへの参照型の引き渡し。

このメソッドは null を返します。

このメソッドは TypeLoadException 例外をスローします。

Uri.Uri メソッド

アセンブリに埋め込まれたファイルまたはリソースを参照する相対 URI に基づいて Uri オブジェクトをインスタンス化しようとすると、UriFormatException 例外がスローされます。

アセンブリに埋め込まれたファイルまたはリソースを参照する相対 URI がサポートされます。

Version.CompareTo(Object) メソッド

version 引数が String である場合、このメソッドは ArgumentException 例外をスローします。

このメソッドは InvalidCastException 例外をスローします。

Version.CompareTo(Object) メソッド

version 引数が null 値の場合、メソッドは 1 を返します。

このメソッドは ArgumentOutOfRangeException 例外をスローします。

WaitHandle.WaitAll

指定されたオブジェクトを待機します。WaitAll の呼び出しがブロックされる可能性があります。

このメソッドは待機せずに true を返します。

X509Certificate.X509Certificate(Byte[], String) メソッドと X509Certificate.X509Certificate(Byte[], String, X509KeyStorageFlags) メソッド

バイト配列が null または要素数が 0 の場合、コンストラクターは ArgumentException 例外をスローします。

例外はスローされません。

X509KeyStorageFlags パラメーターを使用する X509Certificate.X509Certificate メソッドおよび X509Certificate.Import メソッド

フラグが無効の場合、オブジェクト作成コンストラクターまたはメソッドが ArgumentException 例外をスローします。

コンストラクターまたはメソッドは NotSupportedException 例外をスローします。

XmlElementAttribute.ElementName プロパティ

名前が一意でない場合、XML シリアライザーが InvalidOperationException 例外をスローします。

重複する要素名が許容されます。

XmlSerializer クラス

シリアル化された型には、既定の (パラメーターなしの) コンストラクターが必要です。

シリアル化された型の既定のコンストラクターは必須ではありません。

XmlSerializer クラス

既定では、XML シリアル化は XML が UTF-8 でエンコードされ、encoding=utf-8 属性を生成することを前提とします。

シリアライザーはエンコーディング属性を生成しません。

XmlSerializer クラス

派生型が基本型と同じ名前でメンバーを定義している場合、シリアライザーは例外をスローします。

派生型が基本型と同じ名前でメンバーを定義している状況を、シリアライザーは許容します。

XmlSerializer クラス

Nullable<T> 型のプロパティを持つ型は、シリアル化できません。

型のプロパティを持つ型は、シリアル化できます。

XmlSerializer クラス

空の XML ファイルをシリアル化解除しようとすると、例外がスローされます。

例外はスローされません。

XmlSerializer クラス

シリアライザーは、要素データが XmlRootAttribute 属性でタグ付けされていることを前提とします。

XmlRootAttribute 属性がない場合、XmlArrayItemAttribute を要素データに適用できます。

XmlSerializer.Deserialize およびその他の XML 読み取り動作

読み取り動作で、バイト ストリームの最後にある後続 null が返されます。

読み取り動作で、バイト ストリームの最後にある後続 null は破棄されます。

表示:
© 2015 Microsoft