Windows Support
Important
Visual Studio App Center is scheduled for retirement on March 31, 2025. While you can continue to use Visual Studio App Center until it is fully retired, there are several recommended alternatives that you may consider migrating to.
App Center currently supports diagnostics for UWP, WPF, and WinForms applications. This section explains the new experience for UWP apps as part of the 2.5.0 SDK release. For more information on WPF and WinForms applications, see diagnostics features and WPF/WinForms SDK.
App Center supports the full diagnostics feature set for both sideloaded and Windows Store UWP apps using the 2.5.0 SDK or later versions. To enable App Center’s diagnostics for your UWP app, follow App Center's UWP SDK documentation to integrate the App Center SDK. You can learn more about the complete feature set in the diagnostics features documentation.
With the 2.5.0 SDK release in October 2019, App Center released a new diagnostics experience. This section details the improvements and transition experience with the new release.
The new and improved diagnostics experience includes the following additions:
- A full symbolication experience that allows you to upload symbols in App Center. See the symbolication section below for more details.
- Support for handled exceptions
- Number of users affected per crash or error group
- Ability to add annotations per crash or error group
- Ability to mark crash and error groups as open, closed, or ignored
- Ability to download crash and error reports
- Ability to attach, view, and download one binary and one text attachment to your crash reports
- Crash and error report details per crash instance, including when the app launched, when it crashed, and what country/region and language the device used
You can learn more about each feature in the App Center diagnostics documentation.
After you update to the App Center UWP SDK Version 2.5.0, you'll see crash and error data coming into the App Center Diagnostics portal in a new and improved UI. For crash and error data displayed in the new Diagnostics UI, you need to use the APIs listed under the errors section. Learn more about how the old crashes APIs map to the new errors APIs in the API transition documentation.
UWP crash reports show the stack trace for the thread that caused the crash. When the application is using .NET Native (typically in release builds) the stack trace may contain memory addresses instead of class names, methods, file names, and line numbers needed to read and understand the crashes.
Unsymbolicated crashes are displayed in the App Center Diagnostics section so you can view some details even before uploading symbols. The missing symbols from these crashes will be shown in the "unsymbolicated" tab. If the missing symbols are uploaded, the unsymbolicated crash group will be replaced by a symbolicated crash group.
To get the memory addresses translated, you need to upload a .appxsym
file to App Center, which contains all information required for symbolication.
To obtain an .appxsym
file, you must create an app bundle as described here. Once you've created the bundle, you'll find the symbols file as an .appxsym
file inside the app bundle folder.
The App Center Build and Distribution services can automatically generate a valid symbol file and upload to the Diagnostics service. If you use App Center to build and auto distribute your app to your end users, you don't need to manually obtain and upload the symbol files to App Center.
When you publish your application to the store, the .NET Native compilation happens on server side. So, you need to download the symbols from the Partner Center.
- Locate your application in the list and click on it.
- Expand Product management menu from the left panel.
- Click on Manage packages.
- Click on Show packages on the top-right corner for the Submission (version) you want symbols for.
- Locate the package for the version you need symbols for, and click on links for all the supported architectures to download all symbols (such as the Download Windows 10 symbol file (x64) link).
Note
Your application must declare a dependency on any version of .NET Native to generate debug symbols.
This declaration should be included in the <Dependencies>
section of your AppxManifest.xml
. Example:
<PackageDependency Name="Microsoft.NET.Native.Framework.2.2" MinVersion="2.2.29512.0" Publisher="CN=Microsoft Corporation, 0=Microsoft Corporation, L=Redmond, S=Washington, C=US"/>
<PackageDependency Name="Microsoft.NET.Native.Runtime.2.2" MinVersion="2 2.28604.0" Publisher="CN=Microsoft Corporation, 0=Microsoft Corporation, L=Redmond, S=Washington, C=US"/>
- Log into App Center and select your app.
- In the left menu, navigate to the Diagnostics section and select Symbols.
- In the top-right corner, click Upload symbols and upload the file.
- After the symbols are indexed by App Center, crashes will be symbolicated for you.
The process for uploading symbols through the API involves a series of three API calls: one to allocate space on our backend, one to upload the file, and one to update the status of the upload. The body of the first API call should set symbol_type
to UWP
.
- Trigger a
POST
request to the symbol_uploads API. This call allocates space on our backend for your file and returns asymbol_upload_id
and anupload_url
property.
curl -X POST 'https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/symbol_uploads' \
-H 'accept: application/json' \
-H 'X-API-Token: {API TOKEN}' \
-H 'Content-Type: application/json' \
-d '{JSON BODY}'
- Using the
upload_url
property returned from the first step, make aPUT
request with the header:"x-ms-blob-type: BlockBlob"
and supply the location of your file on disk. This call uploads the file to our backend storage accounts. Learn more about PUT Blob request headers .
curl -X PUT '{upload_url}' \
-H 'x-ms-blob-type: BlockBlob' \
--upload-file '{path to file}'
- Make a
PATCH
request to the symbol_uploads API using thesymbol_upload_id
property returned from the first step. In the body of the request, specify whether you want to set the status of the upload tocommitted
(successfully completed) the upload process, oraborted
(unsuccessfully completed).
curl -X PATCH 'https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/symbol_uploads/{symbol_upload_id}' \
-H 'accept: application/json' \
-H 'X-API-Token: {API TOKEN}' \
-H 'Content-Type: application/json' \
-d '{ "status": "committed" }'
Note
The symbol uploads API doesn't work for files that are larger than 256MB. Use the App Center CLI to upload these files. You can install the App Center CLI by following the instructions in our App Center CLI repo.
You can also use the CLI to upload symbol files:
appcenter crashes upload-symbols --appxsym {symbol file}
When App Center doesn't have all the symbol files to fully symbolicate crash reports, the crashes are listed in the Unsymbolicated tab. The required symbols are uploaded from this page if you have access to them.
If you can't upload the symbols, you can mark them as Ignored by selecting rows in the table and clicking the Ignore versions button. This button tells App Center to process the crashes and symbolicate them as fully as possible with the symbols on file. Once they've finished processing, they'll appear in the Crashes tab partially symbolicated. New crashes that also depend on those same symbol IDs marked as ignored will bypass the Unsymbolicated tab as they come in and flow through the system.
App Center doesn't support any other Windows platforms besides UWP, WPF, and WinForms. If you have a Windows app with native C++ crashes, you can upload these crashes to App Center via the upload crashes API.