17
2012/3/31 若林悠 @wakabayashiyu http://www.project0884.com/ Silverlight 4 5 における不具合の状況

Silverlight 4 → 5における不具合の状況

Embed Size (px)

DESCRIPTION

Silverlightを囲む会in東京#6 http://silverlightsquare.com/index.php/tokyo06.html のセッション資料

Citation preview

Page 1: Silverlight 4 → 5における不具合の状況

2012/3/31

若林悠

@wakabayashiyu

http://www.project0884.com/

Silverlight 4 → 5

における不具合の状況

Page 2: Silverlight 4 → 5における不具合の状況

本セッションでは、クライアント環境にインストールされたSilverlightの

バージョンが4 → 5になることで、Silverlightの持つ不具合がどのように

変わるのかを見ていきます。

※注

本セッションで発表した現象は、複数台の端末で確認を行っていますが、それ

以上の確認(各環境の設定等に依存するかどうか etc.)はできておりません。

そのため、あくまで事例の1つとして捉えていただきたいと思います。

Page 3: Silverlight 4 → 5における不具合の状況

Silverlight 4 → 5 で

• 解消された不具合

• 解消されていない不具合

• 新たに発生した不具合

Agenda

Page 4: Silverlight 4 → 5における不具合の状況

Silverlight 4 → 5 で解消された不具合

Page 5: Silverlight 4 → 5における不具合の状況

• Mac OS X Lion(10.7)上

• Silverlight 4 がインストールされている

上記の条件下で日本語や中国語の表示をすることができない。

Silverlight 4 → 5 で解消された不具合 1

※以下のSilverlightのバージョンで確認

実行環境 : 4.1.10111.0

サンプルアプリ : 4

※以下のSilverlightのバージョンで確認

実行環境 : 5.0.61118.0

サンプルアプリ : 4

Page 6: Silverlight 4 → 5における不具合の状況

• Mac OS X Lion(10.7)上

• Silverlight 4 がインストールされている

上記の条件下で特定の全角記号( ☆ ★◇◆※ etc.)を表示させようとすると、

アプリが落ちてしまう。

Silverlight 4 → 5 で解消された不具合 2 ①

※以下のSilverlightのバージョンで確認

実行環境 : 4.1.10111.0

サンプルアプリ : 4

Page 7: Silverlight 4 → 5における不具合の状況

内部的には以下のようなエラーが起きている。

Silverlight 4 → 5 で解消された不具合 2 ②

MS.Internal.WrappedException: [Arg_COMException]

引数:

デバッグ用のリソース文字列は利用できません。キーや引数に関する情報が問題の診断に役立つ場合があります。

http://go.microsoft.com/fwlink/?linkid=106663&Version=4.1.10111.0&File=mscorlib.dll&Key=Arg_COMException を参照

してください。 ---> System.Exception: [Arg_COMException]

引数:

デバッグ用のリソース文字列は利用できません。キーや引数に関する情報が問題の診断に役立つ場合があります。

http://go.microsoft.com/fwlink/?linkid=106663&Version=4.1.10111.0&File=mscorlib.dll&Key=Arg_COMException を参照

してください。

場所 MS.Internal.XcpImports.CheckHResult(UInt32 hr)

場所 MS.Internal.XcpImports.FrameworkElement_MeasureOverride(FrameworkElement element, Size availableSize)

場所 System.Windows.FrameworkElement.MeasureOverride(Size availableSize)

場所 System.Windows.FrameworkElement.MeasureOverride(IntPtr nativeTarget, Single inWidth, Single inHeight,

Single& outWidth, Single& outHeight)

--- 内部例外スタック トレースの終わり ---

Page 8: Silverlight 4 → 5における不具合の状況

Silverlight 4 → 5 で解消されていない不具合

Page 9: Silverlight 4 → 5における不具合の状況

Stringクラスの

「IndexOf」「LastIndexOf」「StartsWith」「EndsWith」各メソッドの処理スピードが

異常に低下する場合がある。

以下の条件下で発生する。

• Mac OS X 上 または Windows XP 上(Macの方が低下が顕著)

• 対象の文字数が多い

(特に対象の文字列にマルチバイト文字が含まれる場合、低下が顕著になる)

• 引数の StringComparison(使用するカルチャ、大文字小文字の区別、並べ替え規則)を省略し

た場合。あるいは値に

「StringComparison .Ordinal」「StringComparison .OrdinalIgnoreCase」

以外を指定した場合

Silverlight 4 → 5 で解消されていない不具合 1 ①

※以下のSilverlightのバージョンで確認

実行環境 : 4.1.10111.0

サンプルアプリ : 4 / 5

Page 10: Silverlight 4 → 5における不具合の状況

回避方法

引数の StringComparison を省略せずに

「StringComparison.Ordinal」

「StringComparison.OrdinalIgnoreCase」

のいずれかを指定すること。

※ただし、Silverlight「3」で作成されたアプリケーションの場合、

StringComparison を省略しても処理スピードの低下は起きない。

(デフォルトが「StringComparison.Ordinal」 になっている模様)

※ 「IndexOf」「LastIndexOf」メソッドで、シークする文字に

string ではなく char を指定する場合は、処理スピードの低下は起きない。

Silverlight 4 → 5 で解消されていない不具合 1 ②

Page 11: Silverlight 4 → 5における不具合の状況

• ブラウザー外実行 (Out -of-Browser)

• 「ブラウザー外実行の設定」でウィンドウスタイルを「罫線なし」か「罫線なし角丸」に設定

したSilverlightアプリを使い、

• Windows上

• マルチディスプレイ環境

• セカンダリモニタ上

上記の条件下で、ウィンドウの最大化

を実行すると、通常であればセカンダリモニタいっぱいにウィンドウが広がるべきところで、

不具合が起きる。

※Silverlight 4 / 5環境で、不具合の内容は異なる(詳細後述)

Silverlight 4 → 5 で解消されていない不具合 2 ①

(プロジェクトのプロパティ)

Page 12: Silverlight 4 → 5における不具合の状況

Silverlight 4 環境の場合

セカンダリモニタの解像度の幅が、プライマリモニタの幅より大きい場合、

ウィンドウがセカンダリからはみ出し、プライマリにかかってしまう。

Silverlight 4 → 5 で解消されていない不具合 2 ②

(サンプルアプリ)

※以下のSilverlightのバージョンで確認

実行環境 : 4.1.10111.0

サンプルアプリ : 4

プライマリモニタ セカンダリモニタ

(ウィンドウ最大化を実行)

Page 13: Silverlight 4 → 5における不具合の状況

Silverlight 5 環境の場合

ウィンドウが画面外に飛んでしまう。

Silverlight 4 → 5 で解消されていない不具合 2 ③

※以下のSilverlightのバージョンで確認

実行環境 : 5.0.61118.0

サンプルアプリ : 4 / 5

(サンプルアプリ)

(ウィンドウ最大化を実行)

Page 14: Silverlight 4 → 5における不具合の状況

Silverlight 4 → 5 で新たに発生した不具合

Page 15: Silverlight 4 → 5における不具合の状況

• Mac OS X 上

• Silverlight 5 がインストールされている環境

で、「System.Windows.Controls.WebBrowser」コントロールを持つ

ブラウザー外実行 (Out -of-Browser)アプリケーションを実行 ※「SL App A」とする

WebBrowserコントロール内に表示させるWebサイト上で、

Silverlightアプリケーションを実行 ※「SL App B」とする

Silverlight 4 → 5 で新たに発生した不具合 1 ①

(SL App A)

(SL App B)

(WebBrowserコントロール)

Page 16: Silverlight 4 → 5における不具合の状況

「SL App B」でHTMLブリッジの、マネージコードからのJavaScript呼び出しができない。

例えば、「SL App B」で

• HtmlPage.Window.GetProperty

• HtmlPage.Window.Invoke

• HtmlPage.Document.GetElementById

• HtmlPage.Document.Cookies

などを実行するとエラーになる。

Silverlight 4 → 5 で新たに発生した不具合 1 ②

※以下のSilverlightのバージョンで確認

実行環境 : 5.0.61118.0

サンプルアプリ : 4 / 5

(「SL App B」で ”HtmlPage.Document.Cookies” を実行)

(SL App B)

Page 17: Silverlight 4 → 5における不具合の状況

ありがとうございました