私が現在取り組んでいるプロジェクトはフォームデザイナー(Silverlightアプリケーション)で、ユーザーはコントロールをツールボックスから作業用キャンバスにドラッグして、プロパティペイン(VisualStudioやExpressionBlendなど)でそのプロパティを指定できます。
QC部門がテストできるように、テストサーバーのIISにアプリをデプロイしました。適用されないフィールド(MinHeightおよびMinWidth)に「Auto」と入力すると、正しく処理されないという特定のバグがあります。これらの無効な値の割り当てを続行し、例外をキャプチャして、例外メッセージを含むメッセージボックスを表示します。
private void SetControlMinWidth(Control control, TextBox setterTextBox, bool isAdvancedControl = false)
{
try
{
double minWidth = !string.IsNullOrEmpty(setterTextBox.Text) ?
(
setterTextBox.Text.Trim().ToUpper() == "AUTO" ? double.NaN : Convert.ToDouble(setterTextBox.Text)
) : control.MinWidth;
control.MinWidth = minWidth;
}
catch (Exception ex)
{
CustomMessageBox.Show(ex.Message.ToString());
}
}
渡される例外は、デフォルトメッセージ「値が期待される範囲内にありません」を含むArgumentExceptionです。展開後、開発者はいくつかのテストを行い、例外処理は期待どおりに機能しています。驚いたことに、QCテスターに表示されるメッセージは、ArgumentExceptionのデフォルトのメッセージではなく、
[Arg_ArgumentException]
Arguments:
Debugging resource strings are unavailable. Often the key and arguments provide sufficient information to diagnose the problem. See http://go.microsoft.com/fwlink/?linkid=106663&Version=4.0.60351.0&File=mscorlib.dll&Key=Arg_ArgumentException
開発者のコンピューターが正しい例外メッセージを表示し、QCテスターのコンピューターは表示しないというこのシナリオを経験した人はいますか?開発者はデプロイされたアプリをテストしており、VisualStudioから実行していないことに注意してください。