Windows 支持

重要

Visual Studio App Center 计划于 2025 年 3 月 31 日停用。 虽然可以继续使用 Visual Studio App Center,直到它完全停用,但你可以考虑迁移到几个建议的替代方法。

详细了解支持时间线和替代方案。

App Center 目前支持 UWP、WPF 和 WinForms 应用程序的诊断。 本部分介绍 UWP 应用作为 2.5.0 SDK 版本的一部分的新体验。 有关 WPF 和 WinForms 应用程序的详细信息,请参阅诊断功能和WPF/WinForms SDK

通用 Windows 平台

App Center 支持使用 2.5.0 SDK 或更高版本的旁加载和 Windows 应用商店 UWP 应用的完整诊断功能集。 若要为 UWP 应用启用 App Center 诊断,请按照 App Center 的 UWP SDK 文档集成 App Center SDK。 可以在诊断功能文档中了解有关完整功能集的详细信息。

新的诊断体验

App Center 在 2019 年 10 月发布的 2.5.0 SDK 中发布了新的诊断体验。 本部分详细介绍了新版本的改进和过渡体验。

进行了哪些改进?

新的和改进的诊断体验包括以下新增功能:

  • 完整的符号化体验,允许在 App Center 中上传符号。 有关更多详细信息,请参阅下面的符号部分。
  • 支持已处理的异常
  • 每个崩溃或错误组受影响的用户数
  • 能够按崩溃或错误组添加批注
  • 能够将崩溃和错误组标记为打开、关闭或忽略
  • 能够下载崩溃和错误报告
  • 能够附加、查看和下载一个二进制文件和一个文本附件到崩溃报告
  • 每个崩溃实例的崩溃和错误报告详细信息,包括应用启动时间、崩溃时间以及设备使用的国家/地区和语言

可以在 App Center 诊断 文档中了解有关每项功能的详细信息。

什么是过渡体验?

更新到 App Center UWP SDK 版本 2.5.0 后,你将在经过改进的新 UI 中看到 App Center 诊断门户中的崩溃和错误数据。 对于新诊断 UI 中显示的崩溃和错误数据,需要使用 错误部分下列出的 API。 在 API 转换文档中详细了解旧崩溃 API 如何映射到新的错误 API。

符号化

UWP 崩溃报告显示导致崩溃的线程的堆栈跟踪。 当应用程序使用.NET Native (通常在发布版本中) 堆栈跟踪可能包含内存地址,而不是读取和理解崩溃所需的类名、方法、文件名和行号。

未分配的崩溃

App Center 诊断部分中会显示未分配的崩溃,因此即使在上传符号之前,也可以查看一些详细信息。 这些崩溃中缺少的符号将显示在“unsymbolicated”选项卡中。如果上传缺少的符号,则未分配的崩溃组将被符号化崩溃组替换。

上传符号

若要转换内存地址,需要将文件上传到 .appxsym App Center,其中包含符号化所需的所有信息。

在本地生成符号

若要获取 .appxsym 文件,必须按 此处所述创建应用捆绑包。 创建捆绑包后,会在应用捆绑包文件夹中找到符号文件。.appxsym

App Center Build 中生成的应用程序的符号

App Center 生成和分发服务可以自动生成有效的符号文件并上传到诊断服务。 如果使用 App Center 生成应用并将其自动分发给最终用户,则无需手动获取符号文件并将其上传到 App Center。

发布到 Microsoft Store 的应用程序的符号

将应用程序发布到存储时,.NET Native编译发生在服务器端。 因此,需要从 合作伙伴中心下载符号。

  1. 在列表中找到应用程序,然后单击它。
  2. 从左侧面板中展开 “产品管理 ”菜单。
  3. 单击“ 管理包”。
  4. 单击右上角的“提交 (版本) 的”显示包“,以获取其符号。
  5. 找到需要符号的版本的包,然后单击所有受支持的体系结构的链接以下载所有符号 (如下载Windows 10符号文件 (x64) 链接) 。

App Center 门户

  1. 登录到 App Center 并选择你的应用。
  2. 在左侧菜单中,导航到“ 诊断 ”部分,然后选择“ 符号”。
  3. 在右上角,单击“ 上传符号” 并上传文件。
  4. App Center 为符号编制索引后,崩溃将为你进行符号化。

App Center API

通过 API 上传符号的过程涉及一系列三个 API 调用:一个用于在后端分配空间,一个用于上传文件,另一个用于更新上传状态。 第一次 API 调用的正文应设置为 symbol_typeUWP

  1. POST触发对symbol_uploads API 的请求。 此调用在后端为文件分配空间,并返回 symbol_upload_idupload_url 属性。
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}'
  1. upload_url使用从第一步返回的属性,使用 标头发出PUT请求,"x-ms-blob-type: BlockBlob"并提供文件在磁盘上的位置。 此调用将文件上传到后端存储帐户。 详细了解 PUT Blob 请求标头
curl -X PUT '{upload_url}' \
    -H 'x-ms-blob-type: BlockBlob' \
    --upload-file '{path to file}'
  1. 使用从第一PATCH步返回的属性向symbol_uploads API 发出请求。symbol_upload_id 在请求正文中,指定是要将上传 committed 状态设置为 (上载过程) 成功完成,还是 aborted () 未成功完成。
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" }'

注意

符号上传 API 不适用于大于 256MB 的文件。 使用 App Center CLI 上传这些文件。 可以按照 App Center CLI 存储库中的说明安装 App Center CLI

App Center CLI

还可以使用 CLI 上传符号文件:

appcenter crashes upload-symbols --appxsym {symbol file}

忽略符号

当 App Center 没有用于对故障报告进行完全符号化的所有符号文件时,崩溃将列在“ 取消符号 化”选项卡中。如果有权访问所需的符号,将从此页面上传这些符号。

如果无法上传符号,可以通过选择表中的行并单击“忽略版本”按钮,将它们标记为“已忽略”。 此按钮告知 App Center 处理崩溃,并尽可能使用文件中的符号对其进行符号化。 完成处理后,它们将显示在部分符号化的 “崩溃 ”选项卡中。 同样依赖于标记为“已忽略”的相同符号 ID 的新崩溃将绕过“ 无符号 ”选项卡,因为它们传入并流经系统。

WinRT、Silverlight 和其他平台

App Center 不支持 UWP、WPF 和 WinForms 以外的任何其他 Windows 平台。 如果你有本机 C++ 崩溃的 Windows 应用,可以通过 上传崩溃 API 将这些崩溃上传到 App Center。