问题标签 [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.
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 支持。
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,基本上是:
将索引源和发布符号包添加到我的 Azure Devops 构建。
在 Visual Studio 中,将我们的 VSTS 服务器添加为符号服务器
在 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 包时,它只是跳过它。
然后我尝试了:
前往https://github.com/dotnet/sourcelink并按照他们的指示安装 Microsoft.SourceLink.Vsts.Git 包(问题 2是否有必要?)
当这不起作用时,我升级了我的应用程序中的每个该死的包,这迫使我安装 .NET Core SDK 2.1.403
在搜索GitHub 问题之后,尝试在我的 NuGet 包的 .csproj 中添加一些东西,
<PublishRepositoryUrl>true</PublishRepositoryUrl> <AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
现在<DebugType>portable</DebugType> <ci>true</ci>
我的 .nupkg 也包含 .pdb 文件,这些文件以前不存在。尽管如此,仍然不能帮助我进行调试。从https://www.nuget.org/packages/sourcelink/安装 sourcelink cli 工具并
sourcelink print-urls
从我的 .nupkg 在 .pdb 上运行。看起来正确,我想?存在 URL。在看到@mitchdenny的评论https://github.com/MicrosoftDocs/vsts-docs/issues/1336#issuecomment-414415049后禁用索引。还是不行。
现在我很困惑为什么它不起作用。
c# - 启用 SourceLink
在 VSTS(Azure DevOps)上拥有私有存储库我尝试通过将以下内容添加到 .csproj 文件来启用 SourceLink:https ://github.com/dotnet/sourcelink#azure-devops-visual-studio-team-services
这在调试期间似乎没有任何影响。本地 NuGet 包中引发异常,我无法使用调用堆栈窗口导航到它,因为甚至没有为该项目加载 pdb。
我在 Visual Studio 中禁用了“仅启用我的代码”并启用了 SourceLink。
我还需要进行哪些其他更改才能启用 SourceLink?
sourcelink - 我可以在现有 PDB 文件上手动运行 SourceLink 吗?
假设我从源代码构建了一个(C++ 或 .NET)库,所以我在本地有源代码和 PDB 文件,但我不想修改库代码以添加/SOURCELINK
或nuget 包。
是否可以在命令行上运行 sourcelink 以将现有的 PDB 链接到 git 存储库?
.net - 调试本地存储的自己的 NuGet 包
我已经为我自己的库构建了一些 NuGet 包(几个经典的 .nupkg 仅包含库 dll 和一个包含 pdb 文件 - .snupkg 扩展名)我已将 NuGet 包复制到本地私有 NuGet 存储库的目录中。
现在,我有一个通过本地 NuGet 代表的 NuGet 包引用库的代码。我想我可以进入库代码,但它不起作用 - 是否有可能开箱即用/使用第 3 方免费工具?
实际上有一段时间它看起来有效,但这可能是因为我之前在我的符号缓存中拥有这些符号。:)
我从 SourceLink 页面注意到,它解决了通过已知的在线提供商(GitHub、BitBucket 等)进入代码的问题——它是否也支持 NuGet 包的一种“离线”存储?
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 包。
这是我的调试设置:
非常感谢。我真的无法弄清楚这个谜题中缺少的部分是什么
c# - 使用 Source Link 从本地 .snupkg 下载源码进行调试
我的理解是 Visual Studio 调试不支持从嵌入式 PDB 中提取源。我读过 Source Link 可以使用本地 NuGet 存储库来下载源代码以进行调试。我创建了一个测试库的 .nupkg 和 .snupkg,在 csproj 中使用它:
我想我需要使用 Source Link 从 .snupkg 中提取源代码。但是,我在文档中只能找到如何从在线(GitHub 等)下载源代码。这可能吗?
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 都没有关系。
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
要使用的任务时,源链接不再起作用。Release
Configuration to package
有没有办法生成一个带有 Release DLL 的 Nuget 包?并且仍然让 Source Link 与 Symbol Server 一起工作?
如果这是唯一的方法,我不介意将.nuspec
文件与Nuget
CLI 一起使用,但是我不想将.pdb
文件包含在 Nuget 包中。
谢谢
.net - 使用源链接的最佳实践
我正在尝试在 NuGet 包中实现源链接。我已经成功地实现了 GitHub README ( https://github.com/dotnet/sourcelink ) 中的说明,但是对于将哪些工件上传到我们的 NuGet 包源 (MyGet) 感到困惑。
似乎生成了两个工件;一个.nupkg
和.snupkg
文件。当我尝试将两者上传到同一个提要时,MyGet 返回 409 响应。
那么,使用 Source Link 的最佳实践是什么?是否为.snupkg
文件使用单独的提要?或者,MyGet 还不支持它吗?
在撰写本文时,我无法在文档或其他地方找到答案。
我目前已切换到使用该.symbols.nupkg
格式并正在上传该格式,这确实有效,但意味着符号.pdb
文件也使包大小膨胀。