Home
%3CLINGO-SUB%20id%3D%22lingo-sub-822238%22%20slang%3D%22en-US%22%3EVisual%20Studio%20App%20Center%20%E3%81%AE%20WPF%20%E5%AF%BE%E5%BF%9C%E6%A9%9F%E8%83%BD%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-822238%22%20slang%3D%22en-US%22%3E%3CP%3E%E5%85%88%E6%97%A5%E3%80%81Visual%20Studio%20App%20Center%20%E3%81%AE%20WPF%20%E3%81%A8%20Windows%20Forms%20%E5%AF%BE%E5%BF%9C%E3%81%8C%E7%99%BA%E8%A1%A8%E3%81%95%E3%82%8C%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fdevblogs.microsoft.com%2Fappcenter%2Fannouncing-wpf-and-winforms-support-in-visual-studio-app-center%2F%22%20target%3D%22_self%22%20rel%3D%22noopener%20noreferrer%20noopener%20noreferrer%22%3EAnnouncing%20WPF%20and%20WinForms%20Support%20in%20Visual%20Studio%20App%20Center%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%E5%AE%9F%E9%9A%9B%E3%81%AB%20Visual%20Studio%20App%20Center%20%E3%81%A7%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E6%96%B0%E8%A6%8F%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E3%81%A8%20Windows%20%E3%81%AE%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA%E3%83%BC%E3%81%AE%E4%B8%8B%E3%81%AB%20WPF%20%E3%81%A8%20WinForms%20%E3%81%8C%E8%BF%BD%E5%8A%A0%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20280px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F128471i97BF61A501A34761%2Fimage-size%2Fmedium%3Fv%3D1.0%26amp%3Bpx%3D400%22%20alt%3D%22createanewapp.jpg%22%20title%3D%22createanewapp.jpg%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%E4%BB%8A%E3%81%AE%E3%83%97%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC%E6%AE%B5%E9%9A%8E%E3%81%A7%E4%BB%A5%E4%B8%8B%E3%81%AE%E6%A9%9F%E8%83%BD%E3%81%8C%E5%88%A9%E7%94%A8%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%3EDistribute%3C%2FLI%3E%0A%3CLI%3EDiagnostics%3C%2FLI%3E%0A%3CLI%3EAnalytics%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CH2%20id%3D%22toc-hId-1818264703%22%20id%3D%22toc-hId-1818264794%22%3E%E3%82%A2%E3%83%97%E3%83%AA%E3%81%B8%E3%81%AE%E7%B5%84%E3%81%BF%E8%BE%BC%E3%81%BF%E6%96%B9%3C%2FH2%3E%0A%3CP%3E%E3%81%A7%E3%81%AF%E3%80%81%E3%81%95%E3%81%A3%E3%81%9D%E3%81%8F%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AB%E7%B5%84%E3%81%BF%E8%BE%BC%E3%82%93%E3%81%A7%E3%81%BF%E3%81%BE%E3%81%97%E3%82%87%E3%81%86%E3%80%82%3C%2FP%3E%0A%3CH3%20id%3D%22toc-hId--930405763%22%20id%3D%22toc-hId--930405672%22%3EDiagnostics%20%26amp%3B%20Analytics%3C%2FH3%3E%0A%3CP%3E%E3%81%93%E3%81%AE%202%20%E3%81%A4%E3%82%92%E7%B5%84%E3%81%BF%E8%BE%BC%E3%82%80%E3%81%AE%E3%81%AF%E9%9D%9E%E5%B8%B8%E3%81%AB%E7%B0%A1%E5%8D%98%E3%81%A7%E3%81%99%E3%80%82%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%81%9F%E7%94%BB%E9%9D%A2%E3%81%AB%E3%82%82%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81%E4%BB%A5%E4%B8%8B%E3%81%AE%202%20%E3%81%A4%E3%81%AE%20NuGet%20%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%82%92%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AB%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E3%81%A9%E3%81%A1%E3%82%89%E3%82%82%E3%83%97%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC%E7%89%88%E3%81%AE%202.3.0-preview%20%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%3C%2FP%3E%0A%3CUL%3E%0A%3CLI%3EMicrosoft.AppCenter.Analytics%3C%2FLI%3E%0A%3CLI%3EMicrosoft.AppCenter.Crashes%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F128474iA0790AA94E771589%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20alt%3D%22nuget.jpg%22%20title%3D%22nuget.jpg%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3Ev2.3.0-preview%20%E3%82%92%E5%85%A5%E3%82%8C%E3%82%8B%E3%81%A8%20Newtonsoft.Json%20%E3%81%AE%20v6.0.1%20%E3%81%8C%20.NET%20Core%20%E5%AF%BE%E5%BF%9C%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%84%E3%81%A8%E3%81%84%E3%81%86%E8%AD%A6%E5%91%8A%E3%81%8C%E5%87%BA%E3%82%8B%E3%81%AE%E3%81%A7%20Newtonsoft.Json%20%E3%81%AE%E6%9C%80%E6%96%B0%E7%89%88%E3%82%82%E6%98%8E%E7%A4%BA%E7%9A%84%E3%81%AB%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%E6%AC%A1%E3%81%AB%E3%80%81AppCenter%20%E3%81%AE%E5%88%9D%E6%9C%9F%E5%8C%96%E5%87%A6%E7%90%86%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E3%81%93%E3%82%8C%E3%81%AF%E3%80%81AppCenter%20%E3%81%A7%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%81%9F%E5%BE%8C%E3%81%AE%E7%94%BB%E9%9D%A2%E3%81%AB%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E3%82%B3%E3%83%BC%E3%83%89%E3%81%9D%E3%81%AE%E3%81%BE%E3%81%BE%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%E4%BB%8A%E5%9B%9E%E3%81%AF%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E3%82%AD%E3%83%BC%E3%81%AE%20GUID%20%E3%81%AF%20appsettings.json%20%E3%81%A8%E3%81%84%E3%81%86%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%A6%E3%80%81%E3%81%9D%E3%81%93%E3%81%AB%E8%A8%98%E8%BC%89%E3%81%99%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%0A%3CP%3E%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AB%20appsettings.json%20%E3%81%A8%E3%81%84%E3%81%86%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%A6%E3%80%81%E3%83%93%E3%83%AB%E3%83%89%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84%E3%81%AB%E3%80%81%E3%81%9D%E3%81%97%E3%81%A6%E5%87%BA%E5%8A%9B%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%BC%E3%81%AB%E3%82%B3%E3%83%94%E3%83%BC%E3%81%99%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20358px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F128475i58DE29F5861F9675%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20alt%3D%22appsettings.jpg%22%20title%3D%22appsettings.jpg%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3Eappsettings.json%20%E3%81%AE%E4%B8%AD%E3%81%AB%E3%80%81%E4%BB%A5%E4%B8%8B%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%20AppCenter%20%E3%81%AE%E3%82%AD%E3%83%BC%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%A6%E3%81%8A%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-javascript%22%3E%3CCODE%3E%7B%0A%20%20%22AppCenterKey%22%3A%20%229a4bebcb-a4b9-44b1-9935-7f8075f6a877%22%0A%7D%0A%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%E3%81%93%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%82%80%E3%81%9F%E3%82%81%E3%81%AB%26nbsp%3BMicrosoft.Extensions.Configuration.Json%20%E3%82%92%20NuGet%20%E3%81%8B%E3%82%89%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%BE%E3%81%99%E3%80%82App.xaml%20%E3%81%A7%20Startup%20%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%82%92%E8%B3%BC%E8%AA%AD%E3%81%99%E3%82%8B%E5%87%A6%E7%90%86%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%A6%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%83%8F%E3%83%B3%E3%83%89%E3%83%A9%E3%83%BC%E3%82%92%E7%94%9F%E6%88%90%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3E%3CAPPLICATION%20class%3D%22AppCenterTestApp.App%22%20xmlns%3D%22%26lt%3BA%20href%3D%22%3Ehttp%3A%2F%2Fschemas.microsoft.com%2Fwinfx%2F2006%2Fxaml%2Fpresentation%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20xmlns%3Ax%3D%22%3CA%20href%3D%22http%3A%2F%2Fschemas.microsoft.com%2Fwinfx%2F2006%2Fxaml%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%20noopener%20noreferrer%22%3Ehttp%3A%2F%2Fschemas.microsoft.com%2Fwinfx%2F2006%2Fxaml%3C%2FA%3E%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20xmlns%3Alocal%3D%22clr-namespace%3AAppCenterTestApp%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20Startup%3D%22Application_Startup%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20StartupUri%3D%22MainWindow.xaml%22%26gt%3B%0A%20%20%20%20%3CAPPLICATION.RESOURCES%3E%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%3C%2FAPPLICATION.RESOURCES%3E%0A%3C%2FAPPLICATION%3E%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%83%8F%E3%83%B3%E3%83%89%E3%83%A9%E3%83%BC%E3%81%AB%20AppCenter%20%E3%81%AE%E5%88%9D%E6%9C%9F%E5%8C%96%E5%87%A6%E7%90%86%E3%82%92%E6%9B%B8%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-csharp%22%3E%3CCODE%3Eusing%20Microsoft.AppCenter%3B%0Ausing%20Microsoft.AppCenter.Analytics%3B%0Ausing%20Microsoft.AppCenter.Crashes%3B%0Ausing%20Microsoft.Extensions.Configuration%3B%0Ausing%20System.Windows%3B%0A%0Anamespace%20AppCenterTestApp%0A%7B%0A%20%20%20%20public%20partial%20class%20App%20%3A%20Application%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20private%20void%20Application_Startup(object%20sender%2C%20StartupEventArgs%20e)%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20conf%20%3D%20new%20ConfigurationBuilder()%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.AddJsonFile(%22appsettings.json%22)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.Build()%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20AppCenter.Start(conf.GetSection(%22AppCenterKey%22).Value%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20typeof(Crashes)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20typeof(Analytics))%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%E3%81%93%E3%82%8C%E3%81%A7%E3%80%81%E4%B8%8B%E6%BA%96%E5%82%99%E3%81%AF%E5%AE%8C%E4%BA%86%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CH4%20id%3D%22toc-hId-615891067%22%20id%3D%22toc-hId-615891158%22%3E%E3%83%AD%E3%82%B0%E3%82%92%E9%80%81%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86%3C%2FH4%3E%0A%3CP%3E%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D%E7%94%A8%E3%81%AE%E3%83%9C%E3%82%BF%E3%83%B3%E3%82%92%20MainWindow.xaml%20%E3%81%AB%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3E%3CWINDOW%20class%3D%22AppCenterTestApp.MainWindow%22%20xmlns%3D%22%26lt%3BA%20href%3D%22%3Ehttp%3A%2F%2Fschemas.microsoft.com%2Fwinfx%2F2006%2Fxaml%2Fpresentation%22%0A%20%20%20%20xmlns%3Ax%3D%22%3CA%20href%3D%22http%3A%2F%2Fschemas.microsoft.com%2Fwinfx%2F2006%2Fxaml%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%20noopener%20noreferrer%22%3Ehttp%3A%2F%2Fschemas.microsoft.com%2Fwinfx%2F2006%2Fxaml%3C%2FA%3E%22%0A%20%20%20%20xmlns%3Ad%3D%22%3CA%20href%3D%22http%3A%2F%2Fschemas.microsoft.com%2Fexpression%2Fblend%2F2008%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%20noopener%20noreferrer%22%3Ehttp%3A%2F%2Fschemas.microsoft.com%2Fexpression%2Fblend%2F2008%3C%2FA%3E%22%0A%20%20%20%20xmlns%3Alocal%3D%22clr-namespace%3AAppCenterTestApp%22%0A%20%20%20%20xmlns%3Amc%3D%22%3CA%20href%3D%22http%3A%2F%2Fschemas.openxmlformats.org%2Fmarkup-compatibility%2F2006%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3Ehttp%3A%2F%2Fschemas.openxmlformats.org%2Fmarkup-compatibility%2F2006%3C%2FA%3E%22%0A%20%20%20%20Title%3D%22MainWindow%22%0A%20%20%20%20Width%3D%22800%22%0A%20%20%20%20Height%3D%22450%22%0A%20%20%20%20mc%3AIgnorable%3D%22d%22%26gt%3B%0A%20%20%20%20%3CSTACKPANEL%3E%0A%20%20%20%20%20%20%20%20%3CBUTTON%20click%3D%22LogButton_Click%22%20content%3D%22Log%22%3E%0A%20%20%20%20%20%20%20%20%3CBUTTON%20click%3D%22CrashButton_Click%22%20content%3D%22Crash%22%3E%0A%20%20%20%20%3C%2FBUTTON%3E%3C%2FBUTTON%3E%3C%2FSTACKPANEL%3E%0A%3C%2FWINDOW%3E%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%E5%90%84%E3%80%85%E3%81%AE%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%AE%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%83%8F%E3%83%B3%E3%83%89%E3%83%A9%E3%83%BC%E3%81%AB%E5%87%A6%E7%90%86%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E3%81%93%E3%81%93%E3%81%AF%E3%80%81%E5%BE%93%E6%9D%A5%E3%81%AE%20Xamarin%20%E3%82%84%20UWP%20%E3%81%AA%E3%81%A9%E3%81%AE%20AppCenter%20%E3%81%AE%20API%20%E3%81%A8%E5%A4%89%E3%82%8F%E3%82%8A%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82Analytics%20%E3%82%AF%E3%83%A9%E3%82%B9%E3%81%AE%20TrackEvent%20%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%82%8A%E3%81%99%E3%82%8B%E5%BD%A2%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%E3%82%AF%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%AF%E5%8D%98%E3%81%AB%E4%BE%8B%E5%A4%96%E3%82%92%E6%8A%95%E3%81%92%E3%81%A6%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E3%82%AF%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E3%81%95%E3%81%9B%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-csharp%22%3E%3CCODE%3Eusing%20Microsoft.AppCenter.Analytics%3B%0Ausing%20System%3B%0Ausing%20System.Collections.Generic%3B%0Ausing%20System.Windows%3B%0A%0Anamespace%20AppCenterTestApp%0A%7B%0A%20%20%20%20public%20partial%20class%20MainWindow%20%3A%20Window%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20public%20MainWindow()%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20InitializeComponent()%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20private%20void%20LogButton_Click(object%20sender%2C%20RoutedEventArgs%20e)%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Analytics.TrackEvent(%22Test%20log%20message%20from%20WPF%20on%20.NET%20Core%20app%22%2C%20new%20Dictionary%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22prop1%22%5D%20%3D%20%22A%20value%20of%20prop1%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22prop2%22%5D%20%3D%20%22A%20value%20of%20prop3%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%22prop3%22%5D%20%3D%20%22A%20value%20of%20prop4%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20private%20void%20CrashButton_Click(object%20sender%2C%20RoutedEventArgs%20e)%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20throw%20new%20InvalidOperationException(%22From%20crash%20button.%22)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%A6%E3%83%9C%E3%82%BF%E3%83%B3%E3%82%92%E6%8A%BC%E3%81%97%E3%81%A6%E6%9A%AB%E3%81%8F%E5%BE%85%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%81%A8%20AppCenter%20%E3%81%AE%E3%83%80%E3%83%83%E3%82%B7%E3%83%A5%E3%83%9C%E3%83%BC%E3%83%89%E3%81%A7%E3%83%AD%E3%82%B0%E3%81%8C%E7%A2%BA%E8%AA%8D%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F128476i206231655FEAB538%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20alt%3D%22clipboard_image_0.png%22%20title%3D%22clipboard_image_0.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3EAnalytics%20%E3%81%AE%20Log%20flow%20%E3%81%A7%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%BF%E3%82%A4%E3%83%A0%E3%81%AB%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%82%82%E5%87%BA%E6%9D%A5%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20843px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F128477i3C450E110403A73F%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20alt%3D%22logstream.gif%22%20title%3D%22logstream.gif%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3ECrash%20%E3%83%9C%E3%82%BF%E3%83%B3%E3%82%92%E6%8A%BC%E3%81%97%E3%81%A6%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E3%82%AF%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E3%81%95%E3%81%9B%E3%81%A6%E3%80%81%E5%86%8D%E5%BA%A6%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E7%AB%8B%E3%81%A1%E4%B8%8A%E3%81%92%E3%81%A6%E6%9A%AB%E3%81%8F%E3%81%99%E3%82%8B%E3%81%A8%20AppCenter%20%E3%81%AE%20Diagnostics%20%E3%81%AE%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AB%E3%82%AF%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E3%81%97%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%AE%E4%BE%8B%E5%A4%96%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F128478iAFA2B427519B6915%2Fimage-size%2Fmedium%3Fv%3D1.0%26amp%3Bpx%3D400%22%20alt%3D%22clipboard_image_1.png%22%20title%3D%22clipboard_image_1.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CH3%20id%3D%22toc-hId--1739752389%22%20id%3D%22toc-hId--1739752298%22%3EDistribute%3C%2FH3%3E%0A%3CP%3EDistribute%20%E6%A9%9F%E8%83%BD%E3%82%82%E6%8F%90%E4%BE%9B%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81%E3%81%93%E3%81%A1%E3%82%89%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E5%86%85%E6%9B%B4%E6%96%B0%E6%A9%9F%E8%83%BD%E3%81%AA%E3%81%A9%E3%81%AF%20iOS%2C%20Android%20%E3%81%AA%E3%81%A9%E5%90%91%E3%81%91%E3%81%AE%E3%82%88%E3%81%86%E3%81%A7%20WPF%20%E3%82%84%20WinForms%20%E3%81%A7%E3%81%AF%E4%BD%BF%E3%81%88%E3%81%AA%E3%81%84%E3%82%88%E3%81%86%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3EEnable%20your%20tester%20to%20easily%20stay%20up%20to%20date%20with%20the%20latest%20releases.%20Integrate%20the%20App%20Center%20SDK%20(and%20the%20Distribution%20Module)%20for%20iOS%2C%20Android%2C%20or%20Xamarin%20to%20automatically%20enable%20in-app%20notification%20of%20new%20releases.%20Once%20completed%20all%20future%20releases%20through%20App%20Center%20will%20trigger%20an%20in-app%20notification%20for%20each%20user%20allowing%20a%20quick%20upgrade%20to%20the%20latest%20version.%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fja-jp%2Fappcenter%2Fdistribution%2Finappupdates%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Fdocs.microsoft.com%2Fja-jp%2Fappcenter%2Fdistribution%2Finappupdates%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EWindows%20%E3%81%AE%20WPF%20%2F%20WinForms%20%E5%90%91%E3%81%91%E3%81%AE%20Distribute%20%E6%A9%9F%E8%83%BD%E3%81%A7%E3%81%AF%20appx%2C%20appxbundle%2C%20appxupload%2C%20msix%2C%20msuxbundle%2C%20msixupload%2C%20zip%2C%20msi%20%E3%81%AA%E3%81%A9%E3%81%AE%E6%8B%A1%E5%BC%B5%E5%AD%90%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%8C%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%82%88%E3%81%86%E3%81%A7%E3%81%99%E3%80%82%E3%81%93%E3%81%93%E3%81%A7%E3%81%AF%E3%81%BE%E3%81%9A%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AB%20zip%20%E5%BD%A2%E5%BC%8F%E3%82%92%E8%A9%A6%E3%81%97%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86%E3%81%A8%E6%80%9D%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EWPF%20on%20.NET%20Core%20%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E5%8F%B3%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%8B%E3%82%89%E7%99%BA%E8%A1%8C%EF%BC%88Publish%EF%BC%89%E3%82%92%E9%81%B8%E6%8A%9E%E3%81%97%E3%81%A6%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%BC%E3%81%AB%E7%99%BA%E8%A1%8C%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E3%82%B3%E3%83%94%E3%83%BC%E3%81%97%E3%81%9F%E3%82%89%E5%8B%95%E3%81%8F%E3%82%88%E3%81%86%E3%81%AB%20Deployment%20Mode%20%E3%82%92%20Self-contained%20%E3%81%AB%E3%81%97%E3%81%A6%20Target%20Runtime%20%E3%82%92%E6%98%8E%E7%A4%BA%E7%9A%84%E3%81%AB%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E7%99%BA%E8%A1%8C%EF%BC%88Publish%EF%BC%89%E3%81%97%E3%81%A6%E3%80%81%E5%87%BA%E6%9D%A5%E4%B8%8A%E3%81%8C%E3%81%A3%E3%81%9F%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%BC%E3%82%92%20zip%20%E3%81%A7%E5%9B%BA%E3%82%81%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%E3%81%9D%E3%81%97%E3%81%A6%E3%80%81AppCenter%20%E3%81%AE%20Distribute%20%E3%81%AB%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F128482iD9D49834F41C8DB2%2Fimage-size%2Fmedium%3Fv%3D1.0%26amp%3Bpx%3D400%22%20alt%3D%22clipboard_image_3.png%22%20title%3D%22clipboard_image_3.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%E3%81%93%E3%81%93%E3%81%A7%E3%81%AF%E3%80%81%E6%89%8B%E5%8B%95%E3%81%A7%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%81%8C%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%8B%E3%82%89%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%82%84%20REST%20API%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%81%AA%E3%81%A9%E3%82%82%E5%8F%AF%E8%83%BD%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fappcenter%2Fdistribution%2Fuploading%23uploading-using-the-app-center-command-line-interface%22%20target%3D%22_self%22%20rel%3D%22noopener%20noreferrer%20noopener%20noreferrer%22%3ERelease%20a%20Build%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%E3%81%BE%E3%81%9F%E3%80%81Azure%20DevOps%20%E3%81%AE%E3%83%93%E3%83%AB%E3%83%89%E3%82%BF%E3%82%B9%E3%82%AF%E3%81%AB%E3%82%82%20App%20Center%20Distribute%20task%20%E3%81%A8%E3%81%84%E3%81%86%E3%82%82%E3%81%AE%E3%81%8C%E3%81%82%E3%82%8B%E3%81%AE%E3%81%A7%E3%80%81Azure%20DevOps%20%E3%81%AE%E3%83%93%E3%83%AB%E3%83%89%E3%82%BF%E3%82%B9%E3%82%AF%E3%81%8B%E3%82%89%E3%81%AE%E5%85%AC%E9%96%8B%E3%82%82%E5%8F%AF%E8%83%BD%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fja-jp%2Fazure%2Fdevops%2Fpipelines%2Ftasks%2Fdeploy%2Fapp-center-distribute%3Fview%3Dazure-devops%26amp%3BviewFallbackFrom%3Dvsts%22%20target%3D%22_self%22%20rel%3D%22noopener%20noreferrer%20noopener%20noreferrer%22%3EApp%20Center%20Distribute%20task%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%E3%83%8E%E3%83%BC%E3%83%88%E3%81%A8%E9%85%8D%E5%B8%83%E5%85%88%E3%81%AE%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%82%92%E9%81%B8%E6%8A%9E%E3%81%97%E3%81%9F%E3%82%89%E5%85%AC%E9%96%8B%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F128484iC1E639CF5DE5BF22%2Fimage-size%2Fmedium%3Fv%3D1.0%26amp%3Bpx%3D400%22%20alt%3D%22clipboard_image_4.png%22%20title%3D%22clipboard_image_4.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%E9%85%8D%E5%B8%83%E5%85%88%E3%81%AB%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%9F%E4%BA%BA%E3%81%AB%E3%81%AF%E4%BB%A5%E4%B8%8B%E3%81%AE%E3%82%88%E3%81%86%E3%81%AA%E3%83%A1%E3%83%BC%E3%83%AB%E3%81%8C%E9%A3%9B%E3%81%B3%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F128485i97B29DFAD0FC8CD9%2Fimage-size%2Fmedium%3Fv%3D1.0%26amp%3Bpx%3D400%22%20alt%3D%22clipboard_image_5.png%22%20title%3D%22clipboard_image_5.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3EInstall%20%E3%83%9C%E3%82%BF%E3%83%B3%E3%82%92%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%A7%E4%BB%A5%E4%B8%8B%E3%81%AE%E3%82%88%E3%81%86%E3%81%AA%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AB%E7%A7%BB%E5%8B%95%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20style%3D%22width%3A%20400px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F128486i4D1C162D2C34D4EB%2Fimage-size%2Fmedium%3Fv%3D1.0%26amp%3Bpx%3D400%22%20alt%3D%22clipboard_image_6.png%22%20title%3D%22clipboard_image_6.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EMSIX%20%E5%BD%A2%E5%BC%8F%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88%E3%82%82%E5%90%8C%E6%A7%98%E3%81%AE%E6%89%8B%E9%A0%86%E3%81%A7%E8%A1%8C%E3%81%88%E3%81%BE%E3%81%99%E3%80%82MSIX%20%E5%BD%A2%E5%BC%8F%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AF%20Windows%20%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E7%B0%A1%E5%8D%98%E3%81%AB%E4%BD%9C%E6%88%90%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%E6%96%B0%E3%81%97%E3%81%84%E3%82%81%E3%81%AE%20Windows%2010%20%E3%82%92%E4%BD%BF%E3%81%86%E5%A0%B4%E5%90%88%E3%81%AB%E3%81%AF%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E6%A9%9F%E8%83%BD%E3%81%AA%E3%81%A9%E3%82%82%E3%81%82%E3%82%8B%E3%81%9F%E3%82%81%E5%89%B2%E3%81%A8%E4%BD%BF%E3%81%84%E3%82%84%E3%81%99%E3%81%84%E3%81%A7%E3%81%99%E3%80%82%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E6%A9%9F%E8%83%BD%E4%BB%98%E3%81%8D%E3%81%AE%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%81%AA%E3%81%A9%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%AE%E8%A9%B3%E7%B4%B0%E3%81%AF%E4%BB%A5%E4%B8%8B%E3%81%AE%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%82%92%E5%8F%82%E7%85%A7%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fja-jp%2Fwindows%2Fmsix%2Fapp-installer%2Fcreate-appinstallerfile-vs%22%20target%3D%22_self%22%20rel%3D%22noopener%20noreferrer%20noopener%20noreferrer%22%3EVisual%20Studio%20%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%82%A2%E3%83%97%E3%83%AA%20%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%A9%E3%83%BC%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%E3%81%9F%E3%81%A0%E3%80%81%E6%AE%8B%E5%BF%B5%E3%81%AA%E3%81%93%E3%81%A8%E3%81%AB%20App%20Center%20%E8%87%AA%E4%BD%93%E3%81%AF%20msix%20(%E5%8E%B3%E5%AF%86%E3%81%AB%E3%81%AF%20App%20Installer)%20%E3%81%AE%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E6%A9%9F%E8%83%BD%E3%81%AA%E3%81%A9%E3%81%AF%E4%BD%BF%E3%81%88%E3%81%AA%E3%81%84%E3%81%AE%E3%81%A7%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E6%A9%9F%E8%83%BD%E3%81%AF%E7%84%A1%E5%8A%B9%E3%81%AB%E3%81%97%E3%81%9F%E7%8A%B6%E6%85%8B%E3%81%A7%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%82%92%E4%BD%9C%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CH2%20id%3D%22toc-hId-199571451%22%20id%3D%22toc-hId-199571542%22%3E%E3%81%BE%E3%81%A8%E3%82%81%3C%2FH2%3E%0A%3CP%3E%E3%81%A8%E3%81%84%E3%81%86%E3%81%93%E3%81%A8%E3%81%A7%E3%80%81%E7%B0%A1%E5%8D%98%E3%81%AB%E3%81%A7%E3%81%99%E3%81%8C%20Visual%20Studio%20App%20Center%20%E3%81%AE%20WPF%20%2F%20WinForms%20%E6%A9%9F%E8%83%BD%E3%82%92%20WPF%20on%20.NET%20Core%20%E3%81%A7%E8%A9%A6%E3%81%97%E3%81%A6%E3%81%BF%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%E3%81%BE%E3%81%A0%E3%83%97%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC%E3%81%A7%E3%81%99%E3%81%8C%E3%80%81WPF%20%2F%20WinForms%20%E3%82%A2%E3%83%97%E3%83%AA%E3%81%A7%E7%B0%A1%E5%8D%98%E3%81%AB%E3%82%A2%E3%83%97%E3%83%AA%E3%83%AD%E3%82%B0%E3%81%AE%E5%8F%8E%E9%9B%86%E6%A9%9F%E8%83%BD%E3%82%84%E3%82%AF%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E3%83%AD%E3%82%B0%E3%81%AE%E5%8F%8E%E9%9B%86%E6%A9%9F%E8%83%BD%E3%80%81%E3%81%95%E3%82%89%E3%81%AB%E3%81%AF%E3%83%86%E3%82%B9%E3%82%BF%E3%83%BC%E3%81%B8%E3%81%AE%E9%85%8D%E5%B8%83%E6%A9%9F%E8%83%BD%E3%81%8C%E4%BD%BF%E3%81%88%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%82%8B%E3%81%AE%E3%81%AF%E3%80%81%E9%9D%9E%E5%B8%B8%E3%81%AB%E4%BE%BF%E5%88%A9%E3%81%AB%E3%81%AA%E3%82%8B%E3%81%AE%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%84%E3%81%8B%E3%81%A8%E6%80%9D%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%E3%81%93%E3%82%8C%E3%81%BE%E3%81%A7%E3%81%AF%20HockyApp%20%E4%BD%BF%E3%82%8F%E3%81%AA%E3%81%84%E3%81%A8%E3%81%84%E3%81%91%E3%81%BE%E3%81%9B%E3%82%93%E3%81%A7%E3%81%97%E3%81%9F%E3%81%8C%E3%80%81HockyApp%20%E3%81%AF%20App%20Center%20%E3%81%B8%E3%81%AE%E7%A7%BB%E8%A1%8C%E3%81%8C%E4%BF%83%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%9F%E3%82%81%E3%80%81%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AF%E3%81%A9%E3%81%86%E3%81%97%E3%81%9F%E3%82%89%E3%81%84%E3%82%93%E3%81%A0%E3%82%8D%E3%81%86%E2%80%A6%E3%81%A8%E6%80%9D%E3%81%A3%E3%81%A6%E3%81%84%E3%81%BE%E3%81%97%E3%81%9F%E3%81%8C%E3%80%81%E3%81%93%E3%81%AE%E5%95%8F%E9%A1%8C%E3%82%82%E8%A7%A3%E6%B6%88%E3%81%97%E3%81%9D%E3%81%86%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%E3%81%9D%E3%82%8C%E3%81%A7%E3%81%AF%E3%80%81%E6%A5%BD%E3%81%97%E3%81%84%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E3%82%92%EF%BC%81%3C%2FP%3E%3C%2FLINGO-BODY%3E
Microsoft

先日、Visual Studio App Center の WPF と Windows Forms 対応が発表されました。

Announcing WPF and WinForms Support in Visual Studio App Center

 

実際に Visual Studio App Center でアプリを新規作成すると Windows のカテゴリーの下に WPF と WinForms が追加されています。

createanewapp.jpg

今のプレビュー段階で以下の機能が利用できます。

  • Distribute
  • Diagnostics
  • Analytics

アプリへの組み込み方

では、さっそくアプリに組み込んでみましょう。

Diagnostics & Analytics

この 2 つを組み込むのは非常に簡単です。アプリを作成した画面にも表示されますが、以下の 2 つの NuGet パッケージをアプリケーションに追加します。どちらもプレビュー版の 2.3.0-preview をインストールしてください。

  • Microsoft.AppCenter.Analytics
  • Microsoft.AppCenter.Crashes

nuget.jpg

 

v2.3.0-preview を入れると Newtonsoft.Json の v6.0.1 が .NET Core 対応ではないという警告が出るので Newtonsoft.Json の最新版も明示的に追加しました。

 

次に、AppCenter の初期化処理を追加します。これは、AppCenter でアプリを作成した後の画面に表示されるコードそのままになります。今回はアプリのキーの GUID は appsettings.json というファイルを追加して、そこに記載するようにしました。

プロジェクトに appsettings.json というファイルを追加して、ビルドアクションをコンテンツに、そして出力フォルダーにコピーするように設定を変更します。

appsettings.jpg

appsettings.json の中に、以下のように AppCenter のキーを追加しておきます。

{
  "AppCenterKey": "9a4bebcb-a4b9-44b1-9935-7f8075f6a877"
}

この設定ファイルを読み込むために Microsoft.Extensions.Configuration.Json を NuGet から追加します。App.xaml で Startup イベントを購読する処理を追加してイベントハンドラーを生成します。

<Application x:Class="AppCenterTestApp.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:AppCenterTestApp"
             Startup="Application_Startup"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
         
    </Application.Resources>
</Application

イベントハンドラーに AppCenter の初期化処理を書きます。

using Microsoft.AppCenter;
using Microsoft.AppCenter.Analytics;
using Microsoft.AppCenter.Crashes;
using Microsoft.Extensions.Configuration;
using System.Windows;

namespace AppCenterTestApp
{
    public partial class App : Application
    {
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            var conf = new ConfigurationBuilder()
                .AddJsonFile("appsettings.json")
                .Build();

            AppCenter.Start(conf.GetSection("AppCenterKey").Value,
                typeof(Crashes),
                typeof(Analytics));
        }
    }
}

これで、下準備は完了です。

ログを送ってみよう

動作確認用のボタンを MainWindow.xaml に追加します。

<Window
    x:Class="AppCenterTestApp.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="clr-namespace:AppCenterTestApp"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Title="MainWindow"
    Width="800"
    Height="450"
    mc:Ignorable="d">
    <StackPanel>
        <Button Click="LogButton_Click" Content="Log" />
        <Button Click="CrashButton_Click" Content="Crash" />
    </StackPanel>
</Window>

各々のボタンのイベントハンドラーに処理を追加します。ここは、従来の Xamarin や UWP などの AppCenter の API と変わりありません。Analytics クラスの TrackEvent メソッドを使ったりする形になります。

クラッシュボタンは単に例外を投げてアプリをクラッシュさせるようにしました。

using Microsoft.AppCenter.Analytics;
using System;
using System.Collections.Generic;
using System.Windows;

namespace AppCenterTestApp
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void LogButton_Click(object sender, RoutedEventArgs e)
        {
            Analytics.TrackEvent("Test log message from WPF on .NET Core app", new Dictionary
            {
                ["prop1"] = "A value of prop1",
                ["prop2"] = "A value of prop3",
                ["prop3"] = "A value of prop4",
            });
        }

        private void CrashButton_Click(object sender, RoutedEventArgs e)
        {
            throw new InvalidOperationException("From crash button.");
        }
    }
}

実行してボタンを押して暫く待っていると AppCenter のダッシュボードでログが確認できます。

clipboard_image_0.png

Analytics の Log flow でリアルタイムに確認することも出来ます。

logstream.gif

Crash ボタンを押してアプリをクラッシュさせて、再度アプリを立ち上げて暫くすると AppCenter の Diagnostics のページにクラッシュしたときの例外が表示されます。

clipboard_image_1.png

Distribute

Distribute 機能も提供されていますが、こちらのアプリ内更新機能などは iOS, Android など向けのようで WPF や WinForms では使えないようです。

Enable your tester to easily stay up to date with the latest releases. Integrate the App Center SDK (and the Distribution Module) for iOS, Android, or Xamarin to automatically enable in-app notification of new releases. Once completed all future releases through App Center will trigger an in-app notification for each user allowing a quick upgrade to the latest version.

https://docs.microsoft.com/ja-jp/appcenter/distribution/inappupdates

 

Windows の WPF / WinForms 向けの Distribute 機能では appx, appxbundle, appxupload, msix, msuxbundle, msixupload, zip, msi などの拡張子のファイルがサポートされているようです。ここではまずシンプルに zip 形式を試してみようと思います。

 

WPF on .NET Core のプロジェクトの右クリックメニューから発行(Publish)を選択してフォルダーに発行します。コピーしたら動くように Deployment Mode を Self-contained にして Target Runtime を明示的に指定します。発行(Publish)して、出来上がったフォルダーを zip で固めます。

 

そして、AppCenter の Distribute にアップロードします。

clipboard_image_3.png

ここでは、手動でアップロードしていますがコマンドラインからのアップロードや REST API を使用したアップロードなども可能です。

Release a Build

 

また、Azure DevOps のビルドタスクにも App Center Distribute task というものがあるので、Azure DevOps のビルドタスクからの公開も可能です。

App Center Distribute task

 

ノートと配布先のグループを選択したら公開できます。

clipboard_image_4.png

配布先に指定した人には以下のようなメールが飛びます。

clipboard_image_5.png

Install ボタンをクリックすることで以下のようなダウンロードページに移動します。

clipboard_image_6.png

 

MSIX 形式のファイルをアップロードする場合も同様の手順で行えます。MSIX 形式のファイルは Windows アプリケーションパッケージプロジェクトを使って簡単に作成できます。

新しいめの Windows 10 を使う場合には自動更新機能などもあるため割と使いやすいです。自動更新機能付きのパッケージなどの作成についての詳細は以下のドキュメントを参照してください。

Visual Studio を使ったアプリ インストーラー ファイルの作成

 

ただ、残念なことに App Center 自体は msix (厳密には App Installer) の自動更新機能などは使えないので自動更新機能は無効にした状態でパッケージを作ることになります。

 

まとめ

ということで、簡単にですが Visual Studio App Center の WPF / WinForms 機能を WPF on .NET Core で試してみました。まだプレビューですが、WPF / WinForms アプリで簡単にアプリログの収集機能やクラッシュログの収集機能、さらにはテスターへの配布機能が使えるようになるのは、非常に便利になるのではないかと思います。

 

これまでは HockyApp 使わないといけませんでしたが、HockyApp は App Center への移行が促されているため、デスクトップアプリはどうしたらいんだろう…と思っていましたが、この問題も解消しそうです。

 

それでは、楽しいアプリ開発を!