PublishSymbols@2 - 为源编制索引并发布符号 v2 任务

使用此任务可为源代码编制索引,并将符号发布到文件共享或 Azure Artifacts 符号服务器。

通过为源代码编制索引,可以使用符号文件在不是用于生成应用程序的那台计算机上调试该应用程序。 例如,可以在没有源代码的开发计算机上调试生成代理所生成的应用程序。

符号服务器使调试器无需知道产品名称、内部版本号或包名称即可自动检索正确的符号文件。

语法

# Index sources and publish symbols v2
# Index your source code and publish symbols to a file share or Azure Artifacts symbol server.
- task: PublishSymbols@2
  inputs:
    #SymbolsFolder: '$(Build.SourcesDirectory)' # string. Path to symbols folder. Default: $(Build.SourcesDirectory).
    SearchPattern: '**/bin/**/*.pdb' # string. Required. Search pattern. Default: **/bin/**/*.pdb.
    #IndexSources: true # boolean. Index sources. Default: true.
    #PublishSymbols: true # boolean. Publish symbols. Default: true.
    SymbolServerType: # 'TeamServices' | 'FileShare'. Required when PublishSymbols = true. Symbol server type. 
    #SymbolsPath: # string. Optional. Use when PublishSymbols = true && SymbolServerType = FileShare. Path to publish symbols. 
    #CompressSymbols: false # boolean. Optional. Use when SymbolServerType = FileShare. Compress symbols. Default: false.
    #SymbolExpirationInDays: '36530' # string. Optional. Use when PublishSymbols = true && SymbolServerType = TeamServices. Symbol Expiration (in days). Default: 36530.
  # Advanced
    #IndexableFileFormats: 'Default' # 'Default' | 'Pdb' | 'SourceMap' | 'All'. Optional. Use when PublishSymbols = true && SymbolServerType = TeamServices. Symbol file formats to publish. Default: Default.
    #DetailedLog: true # boolean. Verbose logging. Default: true.
    #TreatNotIndexedAsWarning: false # boolean. Warn if not indexed. Default: false.
    #UseNetCoreClientTool: false # boolean. Use NetCore client tool. Default: false.
    #SymbolsMaximumWaitTime: # string. Max wait time (min). 
    #SymbolsProduct: # string. Product. 
    #SymbolsVersion: # string. Version. 
    #SymbolsArtifactName: 'Symbols_$(BuildConfiguration)' # string. Artifact name. Default: Symbols_$(BuildConfiguration).
# Index sources and publish symbols v2
# Index your source code and publish symbols to a file share or Azure Artifacts symbol server.
- task: PublishSymbols@2
  inputs:
    #SymbolsFolder: '$(Build.SourcesDirectory)' # string. Path to symbols folder. Default: $(Build.SourcesDirectory).
    SearchPattern: '**/bin/**/*.pdb' # string. Required. Search pattern. Default: **/bin/**/*.pdb.
    #IndexSources: true # boolean. Index sources. Default: true.
    #PublishSymbols: true # boolean. Publish symbols. Default: true.
    SymbolServerType: # 'TeamServices' | 'FileShare'. Required when PublishSymbols = true. Symbol server type. 
    #SymbolsPath: # string. Optional. Use when PublishSymbols = true && SymbolServerType = FileShare. Path to publish symbols. 
    #CompressSymbols: false # boolean. Optional. Use when SymbolServerType = FileShare. Compress symbols. Default: false.
  # Advanced
    #DetailedLog: true # boolean. Verbose logging. Default: true.
    #TreatNotIndexedAsWarning: false # boolean. Warn if not indexed. Default: false.
    #SymbolsMaximumWaitTime: # string. Max wait time (min). 
    #SymbolsProduct: # string. Product. 
    #SymbolsVersion: # string. Version. 
    #SymbolsArtifactName: 'Symbols_$(BuildConfiguration)' # string. Artifact name. Default: Symbols_$(BuildConfiguration).
# Index sources and publish symbols v2
# Index your source code and publish symbols to a file share or Azure Artifacts Symbol Server.
- task: PublishSymbols@2
  inputs:
    #SymbolsFolder: '$(Build.SourcesDirectory)' # string. Path to symbols folder. Default: $(Build.SourcesDirectory).
    SearchPattern: '**/bin/**/*.pdb' # string. Required. Search pattern. Default: **/bin/**/*.pdb.
    #IndexSources: true # boolean. Index sources. Default: true.
    #PublishSymbols: true # boolean. Publish symbols. Default: true.
    SymbolServerType: # 'TeamServices' | 'FileShare'. Required when PublishSymbols = true. Symbol server type. 
    #SymbolsPath: # string. Optional. Use when PublishSymbols = true && SymbolServerType = FileShare. Path to publish symbols. 
    #CompressSymbols: false # boolean. Optional. Use when SymbolServerType = FileShare. Compress symbols. Default: false.
  # Advanced
    #DetailedLog: true # boolean. Verbose logging. Default: true.
    #TreatNotIndexedAsWarning: false # boolean. Warn if not indexed. Default: false.
    #SymbolsMaximumWaitTime: # string. Max wait time (min). 
    #SymbolsProduct: # string. Product. 
    #SymbolsVersion: # string. Version. 
    #SymbolsArtifactName: 'Symbols_$(BuildConfiguration)' # string. Artifact name. Default: Symbols_$(BuildConfiguration).

输入

SymbolsFolder - symbols 文件夹的路径
string. 默认值:$(Build.SourcesDirectory)

指定使用符号文件搜索的文件夹的路径。 默认为 $(Build.SourcesDirectory)。 否则,请指定根路径,例如 $(Build.BinariesDirectory)/MyProject

注意

如果选择 Azure Artifacts 符号服务器作为服务器类型,则不支持 UNC 路径。


SearchPattern - 搜索模式
string. 必需。 默认值:**/bin/**/*.pdb

指定用于发现要发布的 PDB 文件的模式。 有关详细信息 ,请参阅文件匹配模式参考


IndexSources - 索引源
boolean. 默认值:true

指定是否将源服务器信息注入 PDB 文件。 此选项仅在 Windows 代理上受支持。


PublishSymbols - 发布符号
boolean. 默认值:true

指定是否发布符号文件。


SymbolServerType - 符号服务器类型
string. 当 PublishSymbols = true 时,需要此选项。 允许的值: TeamServices 此组织/集合 (中的 (符号服务器需要 Azure Artifacts) ) , FileShare (文件共享) 。

指定发布符号的位置。 任何有权访问组织/集合的用户都可以访问发布到 Azure Artifacts 符号服务器的符号。 Azure DevOps Server仅支持 File share 选项。 请参阅 发布用于调试的符号 以在 Azure Artifacts 中使用符号服务器的说明。


SymbolsPath - 发布符号的路径
string. 可选。 在 时 PublishSymbols = true && SymbolServerType = FileShare使用 。

指定承载符号的文件共享。 此值将在 调用 symstore.exe add 中用作 /s 参数。 若要准备 SymStore 符号存储,请执行以下操作:

  1. 在文件共享服务器上设置一个文件夹来存储符号。 例如,设置 \fabrikam-share\symbols
  2. 生成代理服务帐户授予完全控制权限。

如果将此参数留空,则会为符号的源编制索引,但不会发布符号。 还可以将符号与滴水一起存储。 请参阅发布生成项目


CompressSymbols - 压缩符号
boolean. 可选。 在 时 SymbolServerType = FileShare使用 。 默认值:false

发布到文件共享时压缩符号。


SymbolExpirationInDays - 符号过期 (天)
string. 可选。 在 时 PublishSymbols = true && SymbolServerType = TeamServices使用 。 默认值:36530

指定符号应保留的天数。


IndexableFileFormats - 要发布的符号文件格式
string. 可选。 在 时 PublishSymbols = true && SymbolServerType = TeamServices使用 。 允许的值: Default (要上传) 的默认符号集, Pdb (仅基于 Pdb 的符号 Windows pdb 和托管的 Portable pdb's.) , SourceMap (仅基于 JavaScript 的 SourceMap 符号 (*.js.map) ) , All (所有支持的符号格式) 。 默认值:Default

指定要发布到符号服务器的调试格式。


DetailedLog - 详细日志记录
boolean. 默认值:true

指定详细日志记录。


TreatNotIndexedAsWarning - 如果未编制索引,则发出警告
boolean. 默认值:false

指定如果未为 PDB 文件编制源索引,是否要发出警告。 否则,消息将记录为正常输出。


UseNetCoreClientTool - 使用 NetCore 客户端工具
boolean. 默认值:false

指定是否使用支持 DWARF 和 ELF 文件的符号上传工具版本。 此选项仅在 Windows 代理上起作用。 在非 Windows 代理上,始终会使用支持 DWARF 和 ELF 文件的符号上传工具版本。


SymbolsMaximumWaitTime - 最大等待时间 (分钟)
string.

指定在此任务失败之前要等待的分钟数。


SymbolsProduct - 产品
string.

将 product 参数指定为 symstore.exe。 默认为 $(Build.DefinitionName)


SymbolsVersion - 版本
string.

将 version 参数指定为 symstore.exe。 默认为 $(Build.BuildNumber)


SymbolsArtifactName - 项目名称
string. 默认值:Symbols_$(BuildConfiguration)

指定要用于符号项目的项目名称。 这只能与 FileShare 符号服务器类型一起使用。 默认为 Symbols_$(BuildConfiguration)


任务控制选项

除了任务输入,所有任务都有控制选项。 有关详细信息,请参阅 控制选项和常见任务属性

输出变量

无。

备注

使用此任务可为源代码编制索引,并将符号发布到文件共享或 Azure Artifacts 符号服务器。

通过为源代码编制索引,可以使用符号文件在不是用于生成应用程序的那台计算机上调试该应用程序。 例如,可以在没有源代码的开发计算机上调试生成代理所生成的应用程序。

符号服务器使调试器能够在不知道产品名称、生成号或包名称的情况下自动检索正确的符号文件。

重要

若要删除使用 索引源 & 发布符号任务发布的符号 ,必须先删除生成这些符号的生成。 可以使用保留策略或通过手动删除运行来实现此目的。

索引的工作原理是什么?

选择为源编制索引后,会将一个额外的部分注入到 PDB 文件中。 PDB 文件通常仅包含对本地源文件路径的引用,例如:C:\BuildAgent_work\1\src\MyApp\Program.cs。 注入到 PDB 文件中的额外节包含调试器的映射指令。 映射信息指示如何检索对应于每个本地路径的服务器项。

Visual Studio 调试器将使用映射信息从服务器检索源文件。 用于检索源文件的实际命令包含在映射信息中。 示例:

tf.exe git view /collection:http://SERVER:8080/tfs/DefaultCollection /teamproject:"93fc2e4d-0f0f-4e40-9825-01326191395d" /repository:"647ed0e6-43d2-4e3d-b8bf-2885476e9c44" /commitId:3a9910862e22f442cd56ff280b43dd544d1ee8c9 /path:"/MyApp/Program.cs" /output:"C:\Users\username\AppData\Local\SOURCE~1\TFS_COMMIT\3a991086\MyApp\Program.cs" /applyfilters

是否可以对从 .NET Core 程序集创建的可移植 PDB 使用源索引?

否,但可以改用Source Link

符号保留多长时间?

符号与发布到 Azure Pipelines 的生成相关联,它们与生成相关联。 手动或使用保留策略删除该生成时,也会删除这些符号。 如果你想要无限期保留符号,请将该生成标记为“无限期保留”。

要求

要求 说明
管道类型 YAML,经典内部版本
运行平台 Agent、DeploymentGroup
需求
功能 此任务不满足作业中后续任务的任何要求。
命令限制 任意
可设置的变量 任意
代理版本 2.144.0 或更高版本
任务类别 构建
要求 说明
管道类型 YAML,经典内部版本
运行平台 Agent、DeploymentGroup
需求
功能 此任务不满足作业中后续任务的任何要求。
命令限制 任意
可设置的变量 任意
代理版本 1.95.0 或更高版本
任务类别 构建

另请参阅