25

Visual Studio で記述された WPF アプリケーションがあります。この WPF アプリに Application Insights を追加できますか? ボタン/タイルがクリックされた回数を知りたいです。同じアプリが複数インストールされているので、どのユーザー/インストールでどのボタンが何回クリックされたか知りたいです。これは Application Insights で実行できますか?

ありがとうアバンティ

4

3 に答える 3

31

サポートされているアプリの種類としてリストされていませんが、これは、アプリケーション インサイトに収集/送信される既定のテレメトリ データがなく、AI の追加/アプリケーション インサイト リソースの作成がサポートされていないことを意味します。そうは言っても、言及した特定のシナリオ(ボタン/タイルのクリックなど)を追跡できるように、いくつかの手動手順でWPFに追加することができます。

- Visual Studio から "Application Insights API" NuGet をプロジェクトに追加します (.11 が現在最新です)。

これにより、Application Insights API 参照が追加され、アプリケーション インサイト構成ファイルがプロジェクトに作成されます。

次のように、インストルメンテーション キーで applicationinsights.config ファイルを更新する必要があります。

<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings" schemaVersion="2014-05-30">
    <TelemetryChannel>
        <DeveloperMode>false</DeveloperMode>
    </TelemetryChannel>
    <TelemetryModules>
        <Add Type="Microsoft.ApplicationInsights.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights"/>
    </TelemetryModules>
    <InstrumentationKey>**your-instrumentation-key-guid**</InstrumentationKey>
</ApplicationInsights>

アプリケーション インサイト インストルメンテーション キーを作成するには、Azure サブスクリプションにログインします。 https://portal.azure.com [+] をクリックして、Application Insights リソースを作成します。次に、Application Insights ブレードのプロパティ タイルを選択し、インストルメンテーション キーをコピーして、applicationinsights.config ファイルに追加します。ここで説明されているように、WPF アプリで Application Insights SDK を使用できます。プレリリース.aspx

イベントは、アプリケーション インサイト ブレードで選択できる診断検索ブレードに表示されます。

注: テレメトリは、サービスに送信される前に 1 分間ローカルでバッチ処理されます。ただし、500 を超えるテレメトリ イベントが送信される時点でキューに入れられている場合を除きます。

于 2014-10-29T22:14:39.440 に答える
14

https://azure.microsoft.com/en-us/documentation/articles/app-insights-windows-desktop/

Application Insights を Windows フォーム アプリケーションに追加する方法に関する Microsoft の公式リンク。リンクから:

Azure 内 - portal.azure.com

  1. アプリケーション リソースを作成します。::新規 / 開発者サービス / アプリケーション インサイト。
  2. インストルメンテーション キーが生成されていることに注意してください。コピーを取得して取っておきます。アプリケーションを構成するときに必要になります。

あなたのアプリケーションで

  1. NuGet - 「Application Insights API」を追加
  2. を構成しますTelemetryClient

私は WPF アプリケーションで MvvmCross を使用しています。起動時にTelemetryClient、アプリケーション全体で再利用するシングルを作成します。

var telemetryClient = new TelemetryClient();
telemetryClient.InstrumentationKey = "your key here from Azure";
telemetryClient.Context.Session.Id = Guid.NewGuid().ToString();
telemetryClient.Context.User.AccountId = Username;
telemetryClient.Context.Component.Version = Settings.Default.Version; 
telemetryClient.TrackEvent("Application Start");
Mvx.RegisterSingleton<TelemetryClient>(telemetryClient);
  1. イベント/画面/例外などを記録する

「何かが起こった」ときはいつでもTelemetryClient、イベントを解決して記録します。これは、追跡と記録に関する他の A​​pplication Insights 実装と同じです。

例として -

//Resolve the telemetry client
readonly TelemetryClient telemetryClient = Mvx.Resolve<TelemetryClient>();

//Record a page View with some extra information
var pageviewTelemetry = new PageViewTelemetry("Observations");
pageviewTelemetry.Properties.Add("Breadcrumb", breadcrumb);
telemetryClient.TrackPageView(pageviewTelemetry);

//Track an event
var eventTelemetry = new EventTelemetry("Observation Saved");            
eventTelemetry.Properties.Add("Saved Observation", observation);
telemetryClient.TrackEvent(eventTelemetry);

//Track an exception
try
{
  // do work here
}
catch (Exception ex)
{
    telemeteryClient.TrackException(ex);
}
  1. アプリケーション終了時にフラッシュ

Windows デスクトップ アプリケーションの Application Insights は、何も自動的に収集/送信しません。開発者として、アプリケーションの終了時にフラッシュを強制する必要があります。

private void PowerButton_OnClick(object sender, RoutedEventArgs e)
{
    var tc = Mvx.Resolve<TelemetryClient>();
    if (null != tc)
    {
        tc.Flush(); // only for desktop apps
    }            
    Application.Current.Shutdown();            
}

または、スケジュールに従ってフラッシュするように RxTimer を設定します...30 分ごとにフラッシュすることにしました。

var observable = Observable.Interval(new TimeSpan(0, 0, 30, 0));
observable.Subscribe(_ =>  Application.Current.Dispatcher.Invoke(new Action(() =>
{
    var tc = Mvx.Resolve<TelemetryClient>();
    if (null != tc)
    {
        tc.Flush(); // only for desktop apps
        Console.WriteLine("Flush TC");
    }
})));

参考までに - Application Insights API NuGet パッケージの 0.17.0 以降、オフラインの場合、フラッシュ呼び出しはハングしませんが、ハングするように見えます。オンラインでは、通話はすぐに完了します。オフラインでは、通話が完了するまでに 5 秒間の休止があります。

于 2015-06-16T17:15:35.750 に答える
5

デスクトップ アプリケーションの Application Insights (AI) は非推奨になり、HockeyAppが優先されます。まだ十分に成熟しているわけではありませんが、機能します (イベントは基本的に AI イベントと同じ場所に到達します)。

たとえば、RoslynPad (WPF C# エディター)では次のようになります。

using Microsoft.HockeyApp;


//In your initialization method:
var hockeyClient = (HockeyClient)HockeyClient.Current;

hockeyClient.Configure(HockeyAppId)
    .RegisterCustomDispatcherUnhandledExceptionLogic(OnUnhandledDispatcherException)
    .UnregisterDefaultUnobservedTaskExceptionHandler();

var platformHelper = (HockeyPlatformHelperWPF)hockeyClient.PlatformHelper;
platformHelper.AppVersion = _currentVersion.ToString();

hockeyClient.TrackEvent("App Start");

//sometime later:
hockeyClient.TrackEvent("Something happened");

編集これが正しく機能するには、次の NuGet パッケージが必要なようです: https://www.nuget.org/packages/HockeySDK.WPF.TelemetryWorkaround ( https://github.com/bitstadium/HockeySDK-Windows/を参照)プル/88 )。

于 2016-08-12T17:05:05.060 に答える