Expression Blend アプリケーションのデバッグ

Microsoft Expression Blend アプリケーションが予測どおりに動作しないか、アプリケーションのテスト時にエラーが発生する場合は、アプリケーションにバグが存在する可能性があります。アプリケーションのバグの原因や発生場所を特定することが困難な場合もありますが、遭遇する可能性のあるバグの種類を把握しておくと役に立ちます。

構文エラー

アプリケーションのビルド時に構文エラーがある場合は、Expression Blend の [結果] パネルの [エラー] タブか、Microsoft Visual Studio 2010 の [エラー一覧] パネルに表示されます。

構文エラーは、Extensible Application Markup Language (XAML) またはコードが言語のフォーマット規則に従っていない場合に発生します。エラーの説明を参照すると、エラーの解決に役立ちます。説明では、エラーの発生しているファイルの名前と行番号も確認できます。構文エラーのよくある原因は次のとおりです。

  • キーワードのスペルまたは大文字の表記に誤りがある。

  • テキスト文字列の両側に引用符がない。

  • XAML 要素に終了タグがない。

  • XAML 要素が許可されていない場所にある。これらのエラーは、Expression Blend の [デザイン] ビューまたは Visual Studio 2010 でドキュメントを編集することによって回避できます。

  • コード ファイルで、関数またはメソッドの呼び出しに、必要なパラメーターが含まれていない。たとえば MessageBox.Show() メソッドには、少なくとも 1 つのパラメーター (文字列 MessageBox.Show("Hello") など) が含まれている必要があります。

  • コード ファイルで、ある型の変数が異なる型に割り当てられている。たとえば MessageBox.Show() メソッドは、文字列型の引数を含むことができますが、整数型の引数を含むことはできません。

  • C# で、引数が不要なメソッドの末尾に中かっこが含まれていない。たとえば this.InitializeComponent; では構文エラーが発生します。正しい表記は this.InitializeComponent(); です。

XAML 構文については、MSDN の「Windows Presentation Foundation コントロール ライブラリ Cc294906.xtlink_newWindow(ja-jp,Expression.40).png 」および「Silverlight Control Gallery (Silverlight コントロール ギャラリー) Cc294906.xtlink_newWindow(ja-jp,Expression.40).png 」に一覧表示されている個々のコントロールのトピックを参照してください。プログラミングの構文については、MSDN でコードのキーワードを検索できます。

コンパイル エラー

アプリケーションのビルド時にコンパイル エラーがある場合は、Expression Blend の [結果] パネルの [エラー] タブか、Visual Studio 2010 の [エラー一覧] パネルに表示されます。

コンパイル エラーは、Expression Blend または Visual Studio 2010 のコンパイル システムで、プロジェクトに必要なものが見つからない場合に発生します。たとえば、WPF (Windows Presentation Foundation) プロジェクトに WPF アセンブリへの参照がない場合、"名前 'Window' は、名前空間 'https://schemas.microsoft.com/winfx/2006/xaml/presentation' に存在しません" などのエラーメッセージが表示されます。このエラーが表示された場合、[プロジェクト] メニューの [参照の追加] をクリックし、C:\Program Files\Reference Assemblies\Microsoft\Framework\ フォルダーに次の WPF アセンブリへの参照を追加します。

  • PresentationCore.dll

  • PresentationFramework.dll

  • WindowsBase.dll

これでも "名前 '<member>' は現在のコンテキストに存在しません" などのエラーが表示される場合は、他のアセンブリ参照も見つからないか、不足している名前空間用に using ステートメント (C# の場合) または Imports ステートメント (Visual Basic .NET の場合) をコードに追加する必要がある可能性があります。必要なアセンブリまたは名前空間を見つけるには、MSDN で、エラーの原因になっているメンバーの参照トピックを参照してください。

その他、コンパイル エラーのよくある原因は次のとおりです。

  • キーワードのスペルまたは大文字の表記に誤りがある。

  • アプリケーションで、クラスが適切に参照されていない。たとえば、別の .cs または .vb コード ファイルで実装され、独自の名前空間を持つカスタム クラスをアプリケーションで使用する場合は、そのカスタム クラスを使用するアプリケーションのドキュメントに、以下のような行を追加する必要があります。FullyQualifiedNamespace は、コード ファイル内の名前空間です。

    xmlns:SampleNamespace="clr-namespace:FullyQualifiedNamespace"
    
  • コンパイラ オプションが適切に設定されていないか、システムが Microsoft .NET Framework ベースのアプリケーションをビルドできない。Microsoft .NET Framework がインストール済みで、Expression Blend または Visual Studio 2010 を使用してアプリケーションのビルドを行う場合、これは問題になりません。

  • プロジェクトをビルドする前に、ファイルが保存されていない。たとえば、Expression Blend の [イベント] パネル Cc294906.6c67bb3b-e8a2-4a63-bad5-54d5c15b04dd(ja-jp,Expression.40).png を使用して、分離コード ファイルに新しいイベント ハンドラー メソッドを生成した後 (つまり、Visual Studio で分離コード ファイルを表示した後) に、分離コード ファイルを保存しないで Expression Blend でプロジェクトをビルドしようとすると、プロジェクトにイベント ハンドラーの定義が含まれていないことを通知するエラーが表示されます。

実行時エラー

アプリケーションをビルドして (Expression Blend で F5 キーを押して) 実行したときに予期しない動作をする場合が実行時エラーです。実行時エラーは、ロジックにエラーが含まれるため、原因の特定が困難です。XAML またはコードに変更を加えながら処理を検証して、実行時エラーを解決できることもあります。しかし実際には、アプリケーションのコードを 1 行ずつステップ実行しながら検証していく方が、早く原因を特定できます。

詳細については、「Visual Studio 2010 での Expression Blend アプリケーションのデバッグ」を参照してください。

実行時エラーのよくある原因は次のとおりです。

  • XAML 要素が適切にレイアウトされていないか、誤ったパネル オブジェクトが他のオブジェクトの収容に使用されている。

    レイアウトの詳細については、「オブジェクトの配置」、または MSDN の WPF セクションにある「レイアウト システム Cc294906.xtlink_newWindow(ja-jp,Expression.40).png」と「整列、余白、パディングの概要 Cc294906.xtlink_newWindow(ja-jp,Expression.40).png」を参照してください。

    XAML 要素が適切なイベント ハンドラーに接続されていない。多数のイベント ハンドラー メソッドを作成し、誤ったメソッドを XAML 要素に割り当てた場合に発生します。Expression Blend で開く WPF プロジェクト内の XAML 要素に割り当てられるイベント ハンドラーを確認するには、[オブジェクトとタイムライン] パネルでオブジェクトを選択し、[プロパティ] パネルの [イベント] ボタンをクリックします。

    詳細については、「イベントに応答するコードを記述」を参照してください。

  • Expression Blend のアニメーション トリガーが適切に設定されていない。たとえば、アプリケーションの読み込み後に、アニメーション ストーリーボードを停止または一時停止できるようにする場合は、トリガーで開始する必要があります。(アニメーション ストーリーボードは、既定で Window.Loaded トリガーで開始されますが、変更することができます。)

    詳細については、「アニメーション オブジェクト」を参照してください。アニメーション トリガーの例については、「単純なアニメーションの作成」を参照してください。

  • コード ファイルの変数が、存在しないオブジェクトを参照している。たとえば、分離コード ファイルでは、行 this.InitializeComponent() が出現する前に XAML オブジェクトを参照した場合は、XamlParseException エラーが発生します。

  • コード ファイルで、アプリケーションにより予期しないコード パスが進行する。この状況に対しては、Visual Studio 2010 でのアプリケーションのデバッグで、コードを 1 行づつ実行すると大きな効果があります。

    詳細については、「Visual Studio 2010 での Expression Blend アプリケーションのデバッグ」を参照してください。

  • 分離コード ファイルで、ユーザー インターフェイス (UI) の更新が、別スレッドで実行する必要がある他のプログラム ロジックと同じスレッドで実行されている。たとえば、Label に表示されるテキストを更新し、他の計算を実行し、完了前に再び同じ Label のテキストを更新するイベント ハンドラー メソッドを作成する場合、最後の更新しか表示されません。これは、UI のレンダリングがイベント ハンドラー メソッドの最後に発生し、すべての処理が同じスレッドで行われるため、アプリケーションはメソッドが UI の更新を実行している間にいったん時間をとることができないからです。

    複数の UI の更新と計算を行う WPF アプリケーションの作成方法の詳細については、MSDN の WPF セクションにある「スレッド モデル Cc294906.xtlink_newWindow(ja-jp,Expression.40).png」を参照してください。

  • 分離コード ファイルのイベント ハンドラー メソッドで、UI 要素またはそのプロパティが、有効になる前に参照されている。たとえば、Window1() コンストラクター メソッドでは、まだ UI 要素にアクセスすることができません。OnInitialized() イベント ハンドラー メソッドでは UI 要素にアクセスすることができますが、UI 要素がまだレイアウトされていないため、ActualWidth などのプロパティを検証することはできません。OnLoaded() イベント ハンドラー メソッドでは、XAML ドキュメントに存在する UI 要素に必要な処理をすべて実行できます。

    詳細については、MSDN の WPF のセクションにある「オブジェクトの有効期間イベント Cc294906.xtlink_newWindow(ja-jp,Expression.40).png」を参照してください。

Visual Studio 2010 でのデバッグ

Expression Blend は、WPF ベースのアプリケーションと Microsoft Silverlight アプリケーションで使用できる機能豊富なユーザー インターフェイスを作成するためのデザイン ツールです。Visual Studio 2010 で Expression Blend プロジェクトを開き、ビルドし、デバッグすることができます。Expression Blend プロジェクトの実行機能 (F5 キー) を使用したアプリケーションのデバッグに問題がある場合、Visual Studio 2010 を使用して、実行時エラーに関する詳細なエラー メッセージを取得できます。

詳細については、「Visual Studio 2010 での Expression Blend アプリケーションのデバッグ」を参照してください。

パフォーマンスの問題のデバッグ

WPF では、アプリケーション実行時の動作分析と、パフォーマンスを向上する方法の特定に役立つパフォーマンス評価ツール セットを利用できます。

詳細については、MSDN の WPF のセクションにある「WPF のパフォーマンス プロファイリング ツール Cc294906.xtlink_newWindow(ja-jp,Expression.40).png 」と「WPF アプリケーションのパフォーマンスの最適化 Cc294906.xtlink_newWindow(ja-jp,Expression.40).png」を参照してください。

イベントのトレース

.NET の詳しい知識があるプログラマであれば、WPF アプリケーションにコードを追加して、複雑なバグのデバッグに役立つカスタム デバッグ イベントをトリガーすることができます。この機能は、Event Tracing for Windows (ETW) と呼ばれます。WPF イベント トレース プロファイル ツールでは、ETW を使用してイベントのログを記録します。

詳細については、MSDN の「WPF のパフォーマンス プロファイリング ツール Cc294906.xtlink_newWindow(ja-jp,Expression.40).png」に記載されているイベント トレースと PresentationTraceSources の説明を参照してください。

複合型アプリケーションのデバッグ

WPF 以外に、Windows Forms などの別の技術も使用するアプリケーションでは、予期しない重複動作、拡大縮小、コントロール フォーカスなどの問題が発生することがあります。

複合型アプリケーションのデバッグに役立つ情報については、MSDN の WPF のセクションにある「ハイブリッド アプリケーションのトラブルシューティング Cc294906.xtlink_newWindow(ja-jp,Expression.40).png」を参照してください。

セキュリティ

デバッグ中、アプリケーションでは他のユーザーが使用するときと同じセキュリティ許可が保持されます。

詳細については、「Expression Blend アプリケーションの展開とパブリッシュ」を参照してください。

WPF アプリケーションのセキュリティの詳細については、MSDN の WPF のセクションにある「セキュリティ (WPF) Cc294906.xtlink_newWindow(ja-jp,Expression.40).png 」を参照してください。

ヘルプ情報の入手

Expression Blend アプリケーションのデバッグについてサポートが必要な場合は、「Windows Presentation Foundation (WPF) Cc294906.xtlink_newWindow(ja-jp,Expression.40).png」または「Silverlight learning center (Silverlight ラーニング センター) Cc294906.xtlink_newWindow(ja-jp,Expression.40).png 」で、問題に関連する投稿を検索したり、質問を投稿したりできます。

Copyright ©2011 by Microsoft Corporation. All rights reserved.