【问题标题】:Unable to access symbols published in VSTS Symbol server from visual studio无法从 Visual Studio 访问在 VSTS Symbol 服务器中发布的符号
【发布时间】:2018-04-12 23:14:07
【问题描述】:

作为构建执行的一部分,我能够成功地将符号发布到 VSTS 符号服务器。

按照这个link 设置视觉工作室,直到现在一切都很好。我的符号设置如下所示:

在尝试调试时,Visual Studio 访问 VSTS 符号服务器,但返回错误消息“无法找到或打开 PDB 文件”

以下是 Visual Studio 尝试从 VSTS 符号服务器获取后提供的符号加载信息

【问题讨论】:

  • 你解决了这个问题吗?

标签: visual-studio visual-studio-2017 azure-devops azure-pipelines


【解决方案1】:

截至 2017 年 11 月 15 日,Visual Studio Online(也称为 Azure DevOps)Index Sources and Publish Symbols 构建步骤处理由 dotnet build 创建的新便携式 PDB

您应该勾选Publish symbols 并选择您的订阅。免费层有 5 个用户。您需要为每个用户分配对符号服务器的访问权限。

勾选Index Sources 复选框是没有意义的,因为源文件位于构建服务器上,通常位于一个不起眼的位置,例如C:\agent\_work\34\s\...,它不会将您的本地(或网络路径)与源文件匹配。

为了帮助 Visual Studio 找到源文件,您可以这样做...(您可以通过使用 SourceLink 来避免这种情况,如下所述)

  • 在解决方案资源管理器中选择解决方案,然后从快捷菜单中选择“属性”。
  • 在 Common Properties 节点下,选择 Debug Source Files。
  • 单击文件夹工具/选项/调试/符号文件夹图标图标。可编辑文本出现在包含源代码的目录列表中。
  • 添加您要搜索的路径。

当您开始调试时,所有符号都将下载,您现在可以进入源代码。

这不需要只禁用我的代码,您也不需要启用源服务器。


除非你正在使用,或者想使用源服务器。现在通过添加一些包很容易做到......

借助 AzureDev 操作,您可以按照本指南修改构建管道以使用存储在 GIT 字节中的源文件。

前提是 .NET Core SDK 2.1.300 或桌面版 msbuild 15.7.

在您的包项目项目中,您需要添加 NuGet 包“SourceLink.Create.CommandLine”,这将使您的构建服务器(和您的本地构建机器)能够重写部分便携式 PDB,而无需更改构建管道中的任何内容。

您还需要将包添加到正确的源代码管理中。 As described in this article. - 我正在使用 VSTS,所以我只安装“Microsoft.SourceLink.Vsts.Git”包(现在必须启用 Include Prelease)

要验证这是否有效,您只需构建项目并在 \obj\{config}\{tfm}\ 中查找名为 *.sourcelink.json 的文件,其中包含正确的 URL。

然后你会做通常的打包和发布。

在 Visual Studio 中,您只需要启用

  • 启用源服务器支持
  • 启用源链接支持

【讨论】:

    【解决方案2】:

    您需要运行与构建相同构建构建的应用程序才能将符号发布到VSTS符号服务器,不同构建中的标识会有所不同。

    您可以在 Symbol load 信息中找到 GUID (0CD368C47775439...),您也可以查看 Publish symbols 任务的构建日志,也有 GUID。在构建中,GUID 将相同,并且符号将在调试期间正确加载。

    【讨论】:

      【解决方案3】:

      您是否在 VS.NET 调试选项中启用了源服务器支持? 您也可以取消选中 VS.NET 调试选项中的“仅启用我的代码”。

      我最近写了一个blogpost,我在其中解释了如何设置和使用符号服务器;可能会找到一些可以帮助您解决问题的提示。

      【讨论】:

      • 请更新您的答案。便携问题不再是问题。 blogs.msdn.microsoft.com/devops/2017/11/15/… 解释了这一点。现在的问题是源链接到构建服务器路径,例如 C:\agent_build\code\a\334\erc 这对我来说没用。那么PDB是什么。当我开始调试时,我可以看到它正在下载所有 PDB,但进入时说找不到源文件。我使用 dotnet build -release 构建所有内容 - 文档说便携式 PDB 始终是构建的,是的。但它真的没有用
      • 我相信你的 pdb 没有被索引。您提到的文章中没有任何内容让我认为 .NET 核心中的可移植 pdb 不再是问题
      • Ahhhh.. 该死的对不起,是的,这是一个段落。 docs.microsoft.com/en-us/azure/devops/pipelines/symbols/… - 非常微妙的说法是现在支持它。但是,是的,我现在可以使用便携式 PDB,我不必做你所说的所有事情。我使用 dotnet build 。我实际上正在尝试使用 SourceLink 回到 VSTS GIT,这样它就可以自动从 GIT 中提取正确的源文件
      猜你喜欢
      • 2012-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-11
      • 2022-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多