このレッスンでは、LightSwitch アプリケーションのバグを修正して、再発行する方法について学習します。
アプリケーションのデバッグ
前のレッスン「アプリケーションの実行」では、アプリケーションをインストールしてテストする方法を示しました。そのレッスンでは、[ContactList] 画面の [検索] ボタンにあるバグを特定しました。[連絡先] エンティティにレコードがない場合、ボタンをクリックすると、エラーまたは例外が発生します。このレッスンは、エラーを見つけるためにアプリケーションをデバッグする方法、および例外をキャッチして問題を説明するメッセージを表示するために Button_Execute() メソッドにコードを追加し、エラーを修正する方法を示します。
エラーを修復するには
ソリューション エクスプローラーで、[画面] の下にある [ContactList] ノードを選択します。
[プロジェクト] メニューの [画面コードの表示] をクリックします。
コード エディターが表示され、Find_Execute() メソッドが表示されます。
Application.ShowSearchCustomer(Contacts.SelectedItem.ContactName) を含むコード行を選択し、[デバッグ] メニューの [ブレークポイントの設定/解除] をクリックします。
.png)
コードの行がハイライト表示され、左マージンに赤いブレークポイントのグリフが表示されます。
F5 キーを押してアプリケーションを実行し、[ナビゲーション メニュー] の [連絡先] をクリックして、[連絡先] 画面を開きます。
ツール バーの [検索] ボタンをクリックします。
コード エディターが表示され、ブレークポイントが強調表示されます。
[デバッグ] メニューの [ステップ イン] をクリックします。
[!メモ]
自動的なステップ オーバーに関するメッセージのダイアログ ボックスが表示される場合があります。[いいえ] をクリックして続行します。
"NullReferenceException はユーザー コードで未処理でした" というメッセージが表示されます。
[デバッグ] メニューの [デバッグの停止] をクリックします。
Find_Execute() メソッドの既存のコードを次のコードで置き換えます。
Try Application.ShowSearchCustomer(Contacts.SelectedItem.ContactName) Catch ex As Exception ShowMessageBox("Please select a contact to find") End Trytry { Application.ShowSearchCustomer(Contacts.SelectedItem.ContactName); } catch (Exception ex) { this.ShowMessageBox("No contacts exist to be found"); }例外が発生した場合にこのコードはメッセージを表示します。
Application.ShowSearchCustomer(Contacts.SelectedItem.ContactName) を含むコード行を選択し、[デバッグ] メニューの [ブレークポイントの設定/解除] をクリックします。
F5 キーを押してアプリケーションを再度実行し、[ナビゲーション メニュー] の [連絡先] メニューをクリックして、[連絡先] 画面を開きます。
ツール バーの [検索] ボタンをクリックします。
コード エディターが表示され、ブレークポイントが強調表示されます。
[デバッグ] メニューの [ステップ イン] をクリックします。
例外メッセージは表示されず、強調表示がコードの次の行に移動します。
[デバッグ] メニューの [ステップ イン] を再度クリックします。
強調表示は Catch ブロック内のコード行に移動します。
[デバッグ] メニューの [ステップ イン] をもう一度クリックします。
アプリケーション ウィンドウが表示され、"検索する連絡先を選択してください" というメッセージが表示されます。
[OK] をクリックしてメッセージ ボックスを閉じます。
コード エディターが表示され、End Try コード (C# の右中かっこ (})) が強調表示されます。
F5 キーを押してアプリケーションの実行を再開し、[閉じる] ボタンをクリックします。
アプリケーションを再発行してテストするには
ソリューション エクスプローラーで [プロパティ] ノードをクリックします。
アプリケーション デザイナーの [全般] タブで、[アプリケーション バージョン] フィールドを選択し、2 番目のテキスト ボックスに「1001」と入力します。
[ビルド] メニューの [構成マネージャー] をクリックします。
[構成マネージャー] ダイアログ ボックスが表示されます。
[アクティブ ソリューション構成] の一覧で、[リリース] を選択し、[閉じる] をクリックします。
[ビルド] メニューの [My First Application の発行] を選択します。
LightSwitch 発行アプリケーション ウィザードが表示されます。
左側のウィンドウで、[データベースの構成] をクリックします。
[データベースの構成] ページが表示されます。
[SQL データベース スクリプトを生成する] チェック ボックスをオフにします。
左側のウィンドウで、[認証] をクリックします。
[アプリケーション管理者] ページが表示されます。
[認証の構成の指定] ページの [認証情報をアプリケーションと共に配置しますか] セクションで、[いいえ、認証情報は既に配置されています] を選択します。
[!メモ]
認証情報は、アプリケーションを最初に発行する場合にのみ配置します。同じ認証情報を再度配置しようとすると、発行は失敗し、"このユーザー名は既に使用中です" というメッセージが表示されます。
[発行] をクリックして、アプリケーションを再発行します。
"発行は成功しました" というメッセージがステータス バーに表示されるまで待ちます。
[スタート] メニューで、[Northwind アプリケーション] をクリックしてアプリケーションを開きます。
メッセージが表示され、アプリケーションが新しいバージョンに自動的に更新されます。インストールが完了すると、Northwind アプリケーションが表示されます。
[ナビゲーション メニュー] の [連絡先] をクリックして、[連絡先] 画面を開きます。
ツール バーの [検索] ボタンをクリックし、先ほど追加した "検索する連絡先を選択してください" というメッセージが表示されることを確認します。
アプリケーションを終了するには、[閉じる] ボタンをクリックします。
よく見る
このレッスンでは、アプリケーションをデバッグ、更新、および再発行する方法について示しました。最初のステップは、Find_Execute() メソッドにブレークポイントを設定することでした。アプリケーションを実行したときに、コード行の手前にあるブレークポイントで停止し、コードにステップ インしてその行だけを実行することができました。
そのとき、コードは実行を停止し、"Null 参照の例外" というメッセージを表示しました。Null Reference Exception は、存在しないオブジェクトをコードが参照するときに発生します。この場合、オブジェクトは ContactName の SelectedItem です。
このレッスンは続いて、Try…Catch ブロックを追加することによってコードを修正する方法を示しました。Try…Catch ブロックでは、Try ブロックのコードが最初に実行されます。例外が発生した場合は、Catch ブロック内のコードが実行されます。この場合は、ユーザーにメッセージ ボックスが表示されます。
レッスンでは、バグを修正する方法を示した後、コードを実行して、例外が処理されたこと、また Catch ブロック内のコードが実行され、メッセージ ボックスが表示されたことを確認する方法を示しました。例外が発生する可能性のあるすべての場所に、Try…Catch ブロックをコードに追加することをお勧めします。
最後に、レッスンでは、アプリケーション バージョンの番号を更新する方法を示し、アプリケーションを再発行しました。アプリケーションをインストールしたときに、インストールの許可は求められませんでした。アクセス許可はアプリケーションを最初にインストールしたときに与えられ、更新では必要ありません。
次の手順
次のレッスンでは、アプリケーションで管理機能を使用する方法について学習します。
次のレッスン: アプリケーション管理者としての実行