在Visual Studio中有一個WPF應用程序。 我可以將Application Insights添加到此WPF應用程序嗎? 我想知道點擊了多少次按鈕/瓷磚。由於同一個應用程序有多個安裝 ,我想知道哪個按鈕被點擊了多少次,從哪個用戶/安裝。這可以通過Application Insights完成嗎?WPF應用程序的應用程序見解
由於 阿凡提
在Visual Studio中有一個WPF應用程序。 我可以將Application Insights添加到此WPF應用程序嗎? 我想知道點擊了多少次按鈕/瓷磚。由於同一個應用程序有多個安裝 ,我想知道哪個按鈕被點擊了多少次,從哪個用戶/安裝。這可以通過Application Insights完成嗎?WPF應用程序的應用程序見解
由於 阿凡提
雖然沒有支持的應用類型列出這意味着不是默認收集遙測數據/發送到應用的見解也沒有用於將AI /創建應用程序的見解資源支持。這就是說可以通過一些手動步驟添加到WPF中,以便您可以跟蹤您提到的特定場景(如按鈕/平鋪單擊)。
-From 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資源。 然後選擇應用程序洞察刀片上的屬性切片,並複製Instrumentation密鑰並將其添加到applicationinsights.config文件中。 現在您的WPF應用程序,你可以使用應用程序洞察SDK如下所述:http://blogs.msdn.com/b/visualstudioalm/archive/2014/10/21/application-insights-sdk-0-11-0-prerelease.aspx
您的活動將是它可以在刀片的見解應用選擇診斷搜索刀片可見。
注意:在發送到服務之前,遙測在本地進行1分鐘批處理,除非> 500個遙測事件在發送它們的位置排隊。
應用程序關閉時,批處理事件如何?異常是批處理還是立即發送? – Guillaume 2015-01-02 10:14:00
感謝您的回答,這讓我足夠了解我需要知道的其他內容。 – 2015-02-08 20:50:01
從微軟如何添加應用洞察Windows窗體應用程序的官方鏈接。從鏈接:
在Azure中 - portal.azure.com
在你的應用
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);
任何時候, '有事',我會解決TelemetryClient
並記錄事件。這與任何其他應用程序見解實施有關的跟蹤和記錄。
爲例 -
//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);
}
應用爲透視Windows桌面應用程序不會自動收集/發送任何東西。作爲開發人員,在應用程序退出時需要強制刷新。
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");
}
})));
僅供參考 - 作爲應用洞察API NuGet包的0.17.0或更新版本,如果你處於脫機狀態的清除呼叫不會掛起,但似乎是。在線,呼叫立即結束,離線呼叫完成前有5秒的暫停。
您認爲SDK版本掛起了什麼? – 2015-06-18 05:18:16
您關於AI不會自動發送事件的說明與接受的答案(由MS eployee寫的人合作,在AI團隊中工作):*遙測在本地批處理1分鐘後再發送到服務器,除非> 500個遙測事件在發送*時排隊。所以我猜你設置的計時器是不必要的,並且在應用程序退出時刷新就足夠了。 – 2016-08-12 16:50:51
桌面應用程序的應用程序見解(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/pull/88 )。
workarond軟件包不再可用。 – 2017-05-20 15:12:00
@MicheleFerracin你仍然可以使用這個包,它只是不會出現在搜索結果中。作者將其刪除是因爲這是一個冒險的解決方案,他轉而直接在RP中使用AI(您可以在GitHub上查看他的代碼或查看上面的答案)。 – 2017-05-24 11:30:35
@Sinatr你打算如何從你的客戶那裏得到這些日誌給你?而如果你有一百萬個客戶,你打算在Excel中打開一百萬個csv文件嗎?看看AI分析,它是一個完整的級別:https://azure.microsoft.com/en-us/documentation/articles/app-insights-analytics/ – 2016-08-12 16:53:49