Windows 支持

重要

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

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

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

通用 Windows 平台

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

新的诊断体验

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

进行了哪些改进?

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

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

可以在 App Center 诊断文档中详细了解每个功能

过渡体验是什么?

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

符号

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

未配置崩溃

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

上传符号

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

在本地生成符号

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

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

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

发布到 Microsoft 应用商店的应用程序的符号

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

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

注意

应用程序必须声明任何版本的 .NET Native 的依赖项才能生成调试符号。 此声明应包含在 <Dependencies> 您的 AppxManifest.xml部分。 示例:

<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"/>

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_id 个和一个 upload_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. 使用symbol_upload_id从第一PATCH步返回的属性向symbol_uploads API 发出请求。 在请求正文中,指定是要将上传 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 和其他平台

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