tafuji's blog

C#, Xamarin, Azure DevOps を中心に書いています。

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 アプリを使って検証してみます。

SampleAPp

ボタンがクリックされたときのイベントハンドラで、わざと例外を発生させます。

private void Button1_Click(object sender, EventArgs e)
{
    throw new ApplicationException("Application Crashed");
}

App Center でアプリを作成する

App Center のページで、右上の[Add New] からアプリケーションを作成します。

CreateApp

OS で Windows を選択すると、WPFWinForms が選択できるようになっていますね。(初めて見た時は、少し感動しました) 今回は、WinForms を選択します。

NuGet パッケージの追加

Visual Studio で WinForms のプロジェクトの Visual Studio App Center の SDK を追加します。

  • プレリリースのパッケージを検索するために、チェックボックスにチェックを入れます
  • 検索用のテキストボックスに、App Center と入力します

NuGet

  • 以下の二つのパッケージをインストールします

Start メソッドの呼び出し

Crash の解析を開始するコード記述します。Program.cs の Main メソッドの Application.Run の前に、コードを追加します。

まず、 usingSDK名前空間を追加します。

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 をクリックするとコピーできます。

App Secret

結果を見る

アプリを何度かクラッシュさせて、クラッシュレポートを確認します。クラッシュレポートが送信されるのは、アプリを起動したタイミングなので、アプリをクラッシュさせた後に、アプリを再起動する必要があります。

クラッシュレポートのページを見ると、過去に発生したクラッシュ数の推移と、クラッシュの種類がリストに表示されます。

report

リストに表示されている、項目をクリックすると、クラッシュレポートの詳細が確認できます。StackTrace が確認できるのが何よりうれしいですね。

StatkTrace

影響を受けているユーザー数、デバイスの種類、OS のバージョンも確認できます。

reportother

おわりに

まさか、レガシー扱いの WinForms が App Center でサポートされるようになるとは、思ってもいませんでした。

お客からの厳しい予算要求の中、WinForms というレガシーなプロジェクトを担当していてモチベーションが少し下がり気味の人にとって、ちょっとだけ新しいことやってみようかなというきっかけになればなぁと思っています…

参考