WinForms アプリで App Center を試してみた
はじめに
Visual Studio App Center が WinForms と WPF をサポートするとアナウンスされました。 SIer などに勤める知人からは、「まだ WinForms 案件が多い」という話を聞いたこともあります。 このアナウンスは、そういった、WinForms や WPF のプロジェクトにかかわっている人にとって、うれしいアナウンスなのではないでしょうか。
というわけで、WinForms で App Center の Crash 機能を試してみました。
WinForms や WPF で App Center を使うための前提条件
現時点(2019年8月8日)では、.NET Core はサポート対象外とのことで、ターゲットフレームワークが、.NET Framework 4.5 、クラスライブラリを使用している場合は、そのクラスライブラリが、.NET Standard 1.0 以降の場合に利用できるとのことです。
やってみた手順
サンプル
簡単な WinForms アプリを使って検証してみます。
ボタンがクリックされたときのイベントハンドラで、わざと例外を発生させます。
private void Button1_Click(object sender, EventArgs e) { throw new ApplicationException("Application Crashed"); }
App Center でアプリを作成する
App Center のページで、右上の[Add New] からアプリケーションを作成します。
OS で Windows
を選択すると、WPF
と WinForms
が選択できるようになっていますね。(初めて見た時は、少し感動しました)
今回は、WinForms
を選択します。
NuGet パッケージの追加
Visual Studio で WinForms のプロジェクトの Visual Studio App Center の SDK を追加します。
- プレリリースのパッケージを検索するために、チェックボックスにチェックを入れます
- 検索用のテキストボックスに、
App Center
と入力します
Start
メソッドの呼び出し
Crash の解析を開始するコード記述します。Program.cs の Main
メソッドの Application.Run
の前に、コードを追加します。
using Microsoft.AppCenter; using Microsoft.AppCenter.Analytics; using Microsoft.AppCenter.Crashes;
Main
メソッドに解析を開始するコードを追加します。
static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); AppCenter.Start("{Your App Secret}", typeof(Analytics), typeof(Crashes)); Application.Run(new Form1()); }
{Your App Secret}
ってどこにあるの?
App Secret は、Settings
のページの右上のドット部分をクリックして、Copy app secret
をクリックするとコピーできます。
結果を見る
アプリを何度かクラッシュさせて、クラッシュレポートを確認します。クラッシュレポートが送信されるのは、アプリを起動したタイミングなので、アプリをクラッシュさせた後に、アプリを再起動する必要があります。
クラッシュレポートのページを見ると、過去に発生したクラッシュ数の推移と、クラッシュの種類がリストに表示されます。
リストに表示されている、項目をクリックすると、クラッシュレポートの詳細が確認できます。StackTrace が確認できるのが何よりうれしいですね。
影響を受けているユーザー数、デバイスの種類、OS のバージョンも確認できます。
おわりに
まさか、レガシー扱いの WinForms が App Center でサポートされるようになるとは、思ってもいませんでした。
お客からの厳しい予算要求の中、WinForms というレガシーなプロジェクトを担当していてモチベーションが少し下がり気味の人にとって、ちょっとだけ新しいことやってみようかなというきっかけになればなぁと思っています…