索引源 & 发布符号任务
Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018
使用此任务为源代码编制索引,并将符号发布到文件共享或 Azure Artifacts 符号服务器。
通过为源代码编制索引,可以使用符号文件在用于生成应用程序的计算机上调试应用程序。 例如,可以从没有源代码的开发计算机调试由生成代理生成的应用程序。
符号服务器使调试器能够自动检索正确的符号文件,而无需知道产品名称、内部版本号或包名称。
需求
无
YAML 代码片段
# Index sources and publish symbols
# Index your source code and publish symbols to a file share or Azure Artifacts symbol server
- task: PublishSymbols@2
inputs:
#symbolsFolder: '$(Build.SourcesDirectory)' # Optional
#searchPattern: '**/bin/**/*.pdb'
#indexSources: true # Optional
#publishSymbols: true # Optional
#symbolServerType: ' ' # Required when publishSymbols == True # Options: , teamServices, fileShare
#symbolsPath: The file share that hosts your symbols. # Optional
#compressSymbols: false # Required when symbolServerType == FileShare
#SymbolExpirationInDays: The number of days that symbols should be retained. # Required when PublishSymbols = true && SymbolServerType = TeamServices. Default: 36530
#IndexableFileFormats: Which debug formats to publish to the symbol server. # Options: Default, Pdb, SourceMap, All. # Required when PublishSymbols = true && SymbolServerType = TeamServices. Default: Default
#detailedLog: true # Optional
#treatNotIndexedAsWarning: false # Optional
#useNetCoreClientTool: false # Optional
#symbolsMaximumWaitTime: # Optional
#symbolsProduct: # Optional
#symbolsVersion: # Optional
#symbolsArtifactName: 'Symbols_$(BuildConfiguration)' # Optional
参数
| 参数 | 说明 |
|---|---|
SymbolsFolder符号文件夹的路径 |
(可选) 搜索符号文件的文件夹的路径。 默认值为 $ (Build.SourcesDirectory) ,否则指定根路径。 请注意,如果选择 Azure Artifacts 符号服务器作为服务器类型,则不支持 UNC 路径。 |
SearchPattern搜索模式 |
(需要) 文件匹配模式 () 用于发现要发布的 pdb 文件的模式 默认值:**/bin/**/*.pdb |
IndexSources索引源 |
(可选) 指示是否将源服务器信息注入 PDB 文件。 此选项仅在 Windows 代理上受支持。 默认值:true |
PublishSymbols发布符号 |
(可选) 指示是否发布符号文件 默认值:true |
SymbolServerType符号服务器类型 |
(必需) 选择发布符号的位置。 任何有权访问组织/集合的用户都可以访问发布到 Azure Artifacts 符号服务器的符号。 Azure DevOps Server仅支持“文件共享”选项。 按照 这些说明 在 Azure Artifacts 中使用符号服务器。 TeamServices:
|
SymbolsPath发布符号的路径 |
(可选) 承载符号的文件共享。 此值将在调用 symstore.exe添加 为 /s 参数时使用。 准备 SymStore 符号存储:
如果将此参数留空,则符号将进行源索引但未发布。 (还可以将符号与拖放一起存储。请参阅 发布生成项目) 。 |
CompressSymbols压缩符号 |
(必需) 仅在 选择文件共享 作为 符号服务器类型时可用。 压缩 |
SymbolExpirationInDays符号过期 ((以天为单位)) |
应保留符号的天数。 当 PublishSymbols = true && SymbolServerType = TeamServices 时必需。 默认值:36530 |
高级选项
| 参数 | 说明 |
|---|---|
IndexableFileFormats要发布的符号文件格式 |
要发布到符号服务器的调试格式。 当 PublishSymbols = true && SymbolServerType = TeamServices 时必需。 选项:默认值、Pdb、SourceMap、All。 默认值:默认值 |
DetailedLog详细日志记录 |
(可选) 启用其他日志详细信息。 默认值:true |
TreatNotIndexedAsWarning如果未编制索引,则发出警告 |
(可选) 指示是否未为 PDB 文件编制源索引时发出警告。 否则,消息将记录为普通输出。 即使未选择此选项,消息也会以日志方式写入。 默认值:false |
UseNetCoreClientTool使用支持 Linux 符号的工具版本 |
(可选) 使用支持 DWARF 和 ELF 文件的符号上传工具版本。 此选项仅在 Windows 代理上很重要。 在非 Windows 代理上,将始终使用支持 DWARF 和 ELF 文件的符号上传工具版本。 默认值:false |
SymbolsMaximumWaitTime最大等待时间 (分钟) |
(可选) 失败此任务之前等待的分钟数。 如果将其留空,则限制为 2 小时。 |
SymbolsProduct产品 |
(可选) 指定要symstore.exe的产品参数。 默认值为 $ (Build.DefinitionName) |
SymbolsVersion版本 |
(可选) 指定要symstore.exe的版本参数。 默认值为 $ (Build.BuildNumber) 。 |
SymbolsArtifactName项目名称 |
(可选) 指定要用于符号项目的项目名称。 默认值为 Symbols_$ (BuildConfiguration) 。 默认值:Symbols_$ (BuildConfiguration) |
常见问题解答
问:索引的工作原理是什么?
答:通过选择为源编制索引,将向 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 的生成相关联,它们与生成相关联。 手动或使用保留策略删除生成时,也会删除符号。 如果要无限期保留符号,请将生成标记为 “无限期保留”。