问题标签 [sourcelink]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
146 浏览

c# - 添加 SourceLink nuget 包会导致构建错误

我一直在关注此文档以启用 SourceLink,以便能够调试托管在我们的 Azure DevOps 帐户上的私有 nuget 包,但遇到了问题。

仅安装适当的 nuget 包 ( Microsoft.SourceLink.Vsts.Git) 的行为就会导致构建失败并出现以下错误:

这让我觉得我缺少一些 SDK 或 VS2017 的版本错误,但这一切似乎都还好:我在 VS2017 15.8.7 上,安装了 .NET Core SDK 2.1.403 并且项目是 .NET标准 2.0 库。

删除 nuget 包使构建再次通过,但显然也删除了 SourceLink 支持。

0 投票
2 回答
3901 浏览

azure-devops - 使用 Azure Devops 和 Source Link 调试 NuGet 包

我正在尝试让 SourceLink 与私有 NuGet 包一起使用。我正在运行一个 netcore2.1 Web 应用程序,它引用托管在我们的 Azure Devops NuGet 源上的 netstandard2.0 NuGet 包。

问题 1: Source Link 是否支持 .NET Standard 包?

我已按照此处指南中的说明进行操作https://docs.microsoft.com/en-us/azure/devops/artifacts/symbols/setting-up-github-sourcelinking?view=vsts,基本上是:

  1. 将索引源和发布符号包添加到我的 Azure Devops 构建。

  2. 在 Visual Studio 中,将我们的 VSTS 服务器添加为符号服务器

  3. 在 Visual Studio 中,启用源链接支持。我还尝试启用源服务器支持。

构建管道发布符号路径似乎正在工作 - 在我看到的日志中: Succeeded processing D:\a\1\s\src\MyCompany.Core.Services.SnapshotClient\bin\release\netstandard2.0\MyCompany.Core.Services.SnapshotClient.pdb:

当我开始调试我的应用程序时,我在 VS 输出窗口中看到一堆输出: 'dotnet.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\2.1.4\Microsoft.AspNetCore.Hosting.dll'. Cannot find or open the PDB file.

对于我的 NuGet 包,我看到“已加载符号”,这似乎很有希望。

FWIW 我没有看到 Visual Studio 提示“源链接将从 Internet 下载”。

当我调试并尝试进入我的 NuGet 包时,它只是跳过它。

然后我尝试了:

  1. 前往https://github.com/dotnet/sourcelink并按照他们的指示安装 Microsoft.SourceLink.Vsts.Git 包(问题 2是否有必要?)

  2. 当这不起作用时,我升级了我的应用程序中的每个该死的包,这迫使我安装 .NET Core SDK 2.1.403

  3. 在搜索GitHub 问题之后,尝试在我的 NuGet 包的 .csproj 中添加一些东西, <PublishRepositoryUrl>true</PublishRepositoryUrl> <AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder> 现在 <DebugType>portable</DebugType> <ci>true</ci> 我的 .nupkg 也包含 .pdb 文件,这些文件以前不存在。尽管如此,仍然不能帮助我进行调试。

  4. 从https://www.nuget.org/packages/sourcelink/安装 sourcelink cli 工具并sourcelink print-urls从我的 .nupkg 在 .pdb 上运行。看起来正确,我想?存在 URL。

  5. 在看到@mitchdenny的评论https://github.com/MicrosoftDocs/vsts-docs/issues/1336#issuecomment-414415049后禁用索引。还是不行。

现在我很困惑为什么它不起作用。

0 投票
2 回答
1509 浏览

c# - 启用 SourceLink

在 VSTS(Azure DevOps)上拥有私有存储库我尝试通过将以下内容添加到 .csproj 文件来启用 SourceLink:https ://github.com/dotnet/sourcelink#azure-devops-visual-studio-team-services

这在调试期间似乎没有任何影响。本地 NuGet 包中引发异常,我无法使用调用堆栈窗口导航到它,因为甚至没有为该项目加载 pdb。

我在 Visual Studio 中禁用了“仅启用我的代码”并启用了 SourceLink。

我还需要进行哪些其他更改才能启用 SourceLink?

0 投票
1 回答
101 浏览

sourcelink - 我可以在现有 PDB 文件上手动运行 SourceLink 吗?

假设我从源代码构建了一个(C++ 或 .NET)库,所以我在本地有源代码和 PDB 文件,但我不想修改库代码以添加/SOURCELINKnuget 包

是否可以在命令行上运行 sourcelink 以将现有的 PDB 链接到 git 存储库?

0 投票
0 回答
522 浏览

.net - 调试本地存储的自己的 NuGet 包

我已经为我自己的库构建了一些 NuGet 包(几个经典的 .nupkg 仅包含库 dll 和一个包含 pdb 文件 - .snupkg 扩展名)我已将 NuGet 包复制到本地私有 NuGet 存储库的目录中。

现在,我有一个通过本地 NuGet 代表的 NuGet 包引用库的代码。我想我可以进入库代码,但它不起作用 - 是否有可能开箱即用/使用第 3 方免费工具?

实际上有一段时间它看起来有效,但这可能是因为我之前在我的符号缓存中拥有这些符号。:)

我从 SourceLink 页面注意到,它解决了通过已知的在线提供商(GitHub、BitBucket 等)进入代码的问题——它是否也支持 NuGet 包的一种“离线”存储?

0 投票
1 回答
5844 浏览

visual-studio - 与 Azure DevOps 符号服务器的源链接

互联网上有几种关于如何使用符号源文件和源链接在 Nuget 包中进行调试的记录方法,但老实说,很难理解对我来说什么是好方法。

我们有一个 Azure DevOps 服务器,我们在其上生成 Nuget 包,同时使用我们的构建管道中.pdb的任务将文件发布到 Azure DevOps 符号服务器,如此处所述Index Sources & Publish Symbols

我的项目'在文件中也有参考Microsoft.SourceLink.Vsts.Git和这段代码.csproj

我已经阅读了几篇博客文章,但我最相信最新的来源当然是官方的Source Link Git 存储库

文件readme.md

通常不再建议在 .nupkg 中包含 PDB,因为它会增加包的大小,从而为使用您的包的项目恢复时间,无论用户是否需要通过库的源代码进行调试

我同意这一点,这就是为什么我想使用符号服务器,而不是将.pdb文件包含在 Nuget 包中。因此,请不要将我的问题标记为与问题重复,因为接受的答案正是我不想做的。

自述文件还指出

.snupkg 符号包有一些限制

  • 它们目前不支持 Windows PDB(由 VC++ 生成,或用于将构建属性 DebugType 设置为 full 的托管项目)
  • 它们要求库由较新的 C#/VB 编译器(Visual Studio 2017 Update 9)构建。
  • 包的使用者还需要 Visual Studio 2017 Update 9 调试器。
  • Azure DevOps Artifacts 服务不支持

所以至少我知道我不能使用它。

但是,设置 Source Link 并开始工作的正确方法是什么?

当我调试我的测试控制台应用程序时,它成功地将.pdb文件下载到我的 Symbols 缓存文件夹,但是如果我尝试使用来自我的 Nuget 包的代码单步执行F11,它就不起作用。(但是它System.String.Concat介入是因为我的简单测试 Nuget 包实际上是连接一些字符串)

我试图跑sourcelink test TestSourceLink.pdb,但我得到了一个error: url hash does not match. 我在这里读到这sourcelink test是一个遗留问题,不支持对像我们这样的私有存储库进行身份验证。

使用我的浏览器,如果我访问给出的 URL,sourcelink print-json TestSourceLink.pdb我可以看到最新的源代码。但现在的问题是,为什么 Visual Studio 无法下载源代码?我在 VS 中已通过此 Azure DevOps 服务器的身份验证,因为我能够安装来自此服务器的 Nuget 包。

这是我的调试设置:

VS调试设置

非常感谢。我真的无法弄清楚这个谜题中缺少的部分是什么

0 投票
0 回答
318 浏览

c# - 使用 Source Link 从本地 .snupkg 下载源码进行调试

我的理解是 Visual Studio 调试不支持从嵌入式 PDB 中提取源。我读过 Source Link 可以使用本地 NuGet 存储库来下载源代码以进行调试。我创建了一个测试库的 .nupkg 和 .snupkg,在 csproj 中使用它:

我想我需要使用 Source Link 从 .snupkg 中提取源代码。但是,我在文档中只能找到如何从在线(GitHub 等)下载源代码。这可能吗?

0 投票
0 回答
403 浏览

c# - 如何使用 Source Link 调试 asp.net 核心异步方法?

我正在尝试调试 asp.net 核心内部,以查看引擎盖下发生了什么。

我根据这篇文章在VS Code中设置了.net核心调试:https ://github.com/OmniSharp/omnisharp-vscode/wiki/Debugging-into-the-.NET-Framework-itself

现在我在调试时自动获取 .net 核心源,并且可以进入方法,但不能进入异步方法。由于我手头没有源代码(它从某处即时加载),我无法在异步方法中设置断点以使调试器停在那里。

我有以下控制器方法。如何进入HttpContext.SignInAsync(...)VS Code 调试器中的方法?

更新#1

Visual Studio 2019 也是如此。所以我使用 VS Code 还是 VS 2019 都没有关系。

0 投票
0 回答
779 浏览

azure-devops - Azure DevOps SourceLink 和符号服务器在 Nuget 包中带有发布 DLL

我有一个 .NET Standard 2.0TestSouceLink项目,其中包含以下配置.csproj

我们有一个 Azure DevOps 服务器,它在构建管道中生成我们的 Nuget 包。

Publish symbols path在最后添加了一个任务,将文件推.pdb送到符号服务器,并且我设法让源链接与 Azure DevOps 符号服务器一起工作,仅具有调试构建配置。

问题是我不希望 Nuget 包中的 DLL 在调试模式下生成。我希望他们成为Release。但是当我在文本框中更改dotnet pack要使用的任务时,源链接不再起作用。ReleaseConfiguration to package

有没有办法生成一个带有 Release DLL 的 Nuget 包?并且仍然让 Source Link 与 Symbol Server 一起工作?

如果这是唯一的方法,我不介意将.nuspec文件与NugetCLI 一起使用,但是我不想将.pdb文件包含在 Nuget 包中。

谢谢

0 投票
0 回答
113 浏览

.net - 使用源链接的最佳实践

我正在尝试在 NuGet 包中实现源链接。我已经成功地实现了 GitHub README ( https://github.com/dotnet/sourcelink ) 中的说明,但是对于将哪些工件上传到我们的 NuGet 包源 (MyGet) 感到困惑。

似乎生成了两个工件;一个.nupkg.snupkg文件。当我尝试将两者上传到同一个提要时,MyGet 返回 409 响应。

那么,使用 Source Link 的最佳实践是什么?是否为.snupkg文件使用单独的提要?或者,MyGet 还不支持它吗?

在撰写本文时,我无法在文档或其他地方找到答案。

我目前已切换到使用该.symbols.nupkg格式并正在上传该格式,这确实有效,但意味着符号.pdb文件也使包大小膨胀。