问题标签 [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 回答
164 浏览

azure-devops - 源链接无法从私有 azure 符号服务器下载 nuget 的源文件,使用了错误的域 dev.azure.com/raw/

TL;博士

使用 Azure devops,带有源链接的 VS 尝试从https://dev.azure.com/raw/开源表单...出现 404 错误,看起来域生成模式是错误的

我们有 nuget 包,并希望启用对其源代码的调试。一切都通过 azure devops 完成,任务“ https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/build/index-sources-publish-symbols?view=azure-devops ”在设置时构建 nuget。

在 Visual Studio 中,启用“使用源链接”并禁用“仅我的代码”。VS 中的源服务器设置为带有私有凭据的 dev.azure.com。

找到并加载调试符号时,出现有关“源链接将从互联网下载源”的警报,但随后在日志中提到 404 错误

它尝试下载 https://dev.azure.com/raw/SomeName/SomeProject/_git/XXX.Library/8ab2f2673396a762aeb7d70fbdca85357ec731d0/XXX.Library/Utils/ApiProxy.cs 在浏览器中我也无法以 404 状态访问此文件.

但是通过 Azure UI 我可以找到这个文件,例如通过 https://dev.azure.com/SomeName/SomeProject/_git/XXX.Library/commit/e982b34fa3ff2524eb0f479197369555e64534f2?refName=refs%2Fheads%2Fmaster&_a=contents&path=%2FXXX%2FUtils% 2FApiProxy.cs

所以看起来源链接使用 github.com 模式而不是与 azure 相关的模式生成路径。

0 投票
1 回答
134 浏览

c++ - SourceLink:PDB 文件名大小写与存储库不匹配,破坏 SourceLink

有没有办法在 Visual Studio 中配置链接器,以便嵌入在 .pdb 文件中的文件名(和路径)保持其大小写?

我们有一个想要使用 NuGet 打包的 Visual Studio C++/Cli DLL。我们希望使用 SourceLink,以便我们的开发人员可以进入托管在(私有)GitHub 存储库上的代码。

但是,在尝试单步进入源码时,Visual Studio(2019 16.2.2)报错:

源链接错误

git-credential-manager.exe:无法获取凭据。进程失败,退出代码为 -1。错误:请求失败,代码为 404:“未找到”。将 404 视为身份验证失败。某些服务返回 404 而不是 401 来表示身份验证失败。

源链接网址:https ://raw.githubusercontent.com/OurCompany/OurRepository/aca51f6e381401234e95b63949d150be04a0ea4a/ourproject/oursubfolder/thefile.cpp

请注意,在文件系统和存储库上,文件路径使用骆驼大小写:Ourproject/OurSubFolder/TheFile.cpp.

当我使用基本授权在 Postman 中复制请求时,它确实以 404 失败。但是,问题似乎是 Visual Studio 构建的 URL 使用小写字符作为文件名和位置;更正大小写使请求在 Postman 中工作。GitHub URLs 当然是区分大小写的,这是不可配置的。

在 Notepad++ 中打开 .pdb 文件显示文件名确实是小写的。

对于它的价值,更改ignorecase = falsegit .config 文件没有任何区别。

0 投票
0 回答
404 浏览

c# - 使用 Microsoft.SourceLink.AzureRepos.Git 时的 SourceLink 身份验证错误

我正在尝试为我们的内部 NuGet 包启用 SourceLink,但遇到了一个我不知道如何解决的问题。

我的设置是:

  • Visual Studio 2019 企业版 (16.3.8)
  • Azure DevOps git 存储库
  • 具有 SDK 样式项目的 .NET Framework 4.7.2 类库,其中包含单个 HelloWorld 类
  • 使用最新版本 (1.0.0-beta2-19554-01) 对 Microsoft.SourceLink.AzureRepos.Git 的 PackageReference
  • 该项目生成一个包含 DLL 和 PDB 的包(我知道不鼓励这样做,但我想让它以这种方式工作而不是使用符号服务器;这似乎也不是问题的根源,因为调试器找到了正确的 PDB)

项目文件

  • 我将更改提交到存储库并构建包。该软件包构建良好。当我检查生成的 .nuspec 文件时,它包含正确的提交哈希。
  • 我使用nuget add Lib.2.0.0.nupkg -Source C:\NuGet.
  • 我删除了本地 HelloWorld 源,因此调试器找不到这些源并尝试从 git 存储库下载它们
  • 我创建了一个控制台应用程序,引用了这个 NuGet 包,并在 HelloWorld 类上调用了 HelloWorld 函数。在调试器中,我按 F11 进入 HelloWorld 调用。“SourceLink will download [...]”对话框出现,我选择“Download Source and Continue Debugging”。

这不起作用。我收到以下错误消息

现在,错误消息很清楚,我只是不明白。当我转到错误消息中所述的 URL 时,我看到了我期望的文件内容。我使用了一个从不用于检查的浏览器,当导航到此页面时,它要求我登录,我使用在 Visual Studio 中使用的相同帐户登录。我还尝试退出 Visual Studio,重新启动它,然后使用我在浏览器中使用的相同帐户再次登录到 Visual Studio。还是同样的错误。

我有点迷路了。有人知道我还能尝试什么吗?

0 投票
1 回答
87 浏览

c++ - 是否可以在 C++ 构建中使用 SourceLink 功能“EmbedAllSources”?

SourceLink 支持“EmbedAllSources”功能。如何从 dotnet 构建中使用此功能已被详细记录。是否可以将该功能用于 C++ 构建?我该怎么做呢?

0 投票
2 回答
415 浏览

c# - 找不到文件:源链接认证失败

我有两个解决方案,它们是我其他项目的库

第一个称为框架,第二个称为库。解决方案上的一些项目是 .net 标准 2.1,一些是 .net core 3.1

每个解决方案都在不同的 git 存储库中,但我对两者都有完全访问权限。

这是我的项目配置

我在 azure devops 上构建了两个应该相同的版本。他们都构建、发布 nuget 包和符号到相同的 azure devops。

在 Visual Studio 中,我添加了 azure devops 作为符号位置。

两个项目中的所有符号都加载到缓存中,但只有库中的源链接有效,框架中的符号给了我这些错误

您需要找到 StartUpExtensions.cs 才能查看当前调用堆栈帧的来源

源链接错误:Azure DevOps:使用帐户“luiz.bicalho@XXXXXXXXX.com.br”的凭据。错误:请求失败,代码为 404:“未找到”。将 404 视为身份验证失败。某些服务返回 404 而不是 401 来表示身份验证失败。

Source Link URL: https://XXXXXXXX.visualstudio.com/828fa95b-4dc5-4f4a-b335-a9f82be0d6d5/_apis/git/repositories/c625311f-9b29-48c5-af18-c36be4b662df/items?api_version=1.0&versionType=commit&version=b8d8dc10f07a92cc304f027ae89f928c85bcfa1f&path =/框架/XXXXXXXXXXX/StartUp/StartUpExtensions.cs

查找“C:\agent_work\10\s\Framework\XXXXXXXXX\StartUp\StartUpExtensions.cs”的源代码。校验和:SHA256 {64 99 71 5c 2b 61 7b 3a c4 1a e5 56 a8 d4 7c 4c 66 27 15 91 50 bf 61 f5 f5 bc 2c 60 76 cc 5b dc} 文件'C:\agent_work\10\s\Framework \XXXXXXXXX\StartUp\StartUpExtensions.cs' 不存在。在脚本文档中查找 'C:\agent_work\10\s\Framework\XXXXXXXXX\StartUp\StartUpExtensions.cs'... 在项目中查找 'C:\agent_work\10\s\Framework\XXXXXXXXX\StartUp\StartUpExtensions 。CS'。在项目中找不到该文件。搜索嵌入在符号文件中的文档。未找到嵌入文档。使用 Source Link (https://XXXXXXX.visualstudio.com/828fa95b-4dc5-4f4a-b335-a9f82be0d6d5/_apis/git/repositories/c625311f-9b29-48c5-af18-c36be4b662df/items?api_version=1.0&versionType=commit&version=b8d8dc10f07a92cc304f027ae89f928c85bcfa1f&path=/Framework/ XXXXXXXXXXXX/StartUp/StartUpExtensions.cs)... 源链接错误:Azure DevOps:使用帐户“luiz.bicalho@XXXXXXXXXX.com.br”的凭据。错误:请求失败,代码为 404:“未找到”。将 404 视为身份验证失败。某些服务返回 404 而不是 401 来表示身份验证失败。未使用 Source Link 找到该文件。使用源服务器寻找源...活动解决方案的调试源文件设置表明调试器不会要求用户查找文件:C:\agent_work\10\s\Framework\XXXXXXXXXX\StartUp\StartUpExtensions.cs . 调试器找不到源文件“C:\agent_work\10\s\Framework\XXXXXXXXX\StartUp\StartUpExtensions.cs”。

我不确定是什么导致了这个错误,我在 git security、构建过程和项目配置中查找

我将添加更多信息以完成 Lance Li-MSFT 的答案

1)第一个配置

2)这就是有效的部署 库部署

这就是不起作用的部署 在此处输入图像描述

3)我在这里有两个不同之处

a) 只是我的代码被启用 b) .net 框架源步进被禁用

4)我现在正在这样做

仍然无法正常工作,而且我的帐户不是 azure AD 帐户,是 azure devops 中的实时 ID

0 投票
2 回答
888 浏览

visual-studio - 带有调试和发布的 Nuget 包

在我们的工作中,我们有一个开发库的团队和其他使用这些库开发项目的团队。

图书馆团队比项目团队拥有更多的经验。

我们在这里创建了这个环境:

所有的库都在 nuget 包中,在 nuget 服务器中,在 azure devops 中。我们在 Azure devops 中有源链接。

但是当我们部署这些库时,我们必须在调试或发布之间做出选择,而且我们各有利弊。

我理想的 nuget 包将同时具有调试和发布,并且会选择与运行它的项目相同的项目。

这样我就可以为项目团队进行更好的调试,并在发布时获得最大的性能。

我与https://twitter.com/rrelyea进行了交谈,他提出了一些想法,但对于其他团队来说实施起来似乎很复杂,或者管理起来很复杂。

像 2 台 nuget 服务器,一台用于调试,一台用于发布,并在机器和构建服务器上配置这些不同的服务器。

或者 2 个 nuget 包,在包的名称上带有 .debug 和 .release,并将项目配置为在每种模式下加载不同的包。

真正的问题是我需要保证所有包在两台服务器上都具有相同的 id 和版本。

没有更自动化的打包方式吗?

很简单,如果是调试就使用调试,如果是发布就使用发布。

顺便问一下,在这种情况下,调试和发布之间的性能差异有多大?

0 投票
1 回答
98 浏览

.net - .NET 源链接:尽管链接正确,但“找不到源”

我认为我正确设置了所有内容。在本教程之后,我创建了符号并配置了 Visual Studio 。我可以进入其他库,如 JsonNet。

当我尝试进入我的代码时,它会尝试从正确的路径加载代码。(我可以通过 Internet 浏览器中的此路径访问所需的文件。)

在此处输入图像描述

它开始下载:

在此处输入图像描述

但随后它失败并显示消息:“找不到源”,尽管路径是正确的!

在此处输入图像描述

可能是什么原因?

编辑 1: 在 Visual Studio 调试选项下添加源服务器调试消息: 在此处输入图像描述

然后我收到以下错误消息:SRCSRV:模块'C:\Users\Administrator\.......\bin\Debug\netcoreapp3.1\.....SectorGrid.dll' does not contain source server information.

编辑 2: 我没有添加这里提到的源链接参数。但我认为这发生在引擎盖下!?我没有联系到这里描述的提到的 json 。但是我的 .pdb 文件中有一个与此处描述的完全相同的链接: 在此处输入图像描述

0 投票
1 回答
100 浏览

c# - Visual Studio Xamarin.Forms 调试:如何进入外部库方法?

有时会从 Xamarin.Forms 外部库内部引发异常,并且在调试器中查看相关的局部变量将非常有帮助,就像我们在自己的代码中一样。

这是我当前的 Android iOS 项目头痛的堆栈跟踪:

除了将 Xamarin.Forms 源代码分叉到我的项目中之外,还有其他方法吗?

0 投票
2 回答
58 浏览

c# - Visual Studio SourceLink Nuget 集成与单独的解决方案调试

我有一个我们在整个解决方案中使用的 nuget 包库,托管在 Azure Artifacts 中。这些 nuget 包是在启用调试的情况下构建的,因此会创建符号并将其包含在 nuget 包中。

我们在 Visual Studio(主要是 Net Core 3.1)中的项目使用 Nuget 包管理器以正常方式引用这些 nuget 包。

每个解决方案都启用了 SourceLink,因此如果我有任何调试要求需要单步执行引用的 nuget 包中的代码,我可以设置一个断点,并且可以很好地执行此操作,因为 Visual Studio 直接从 Azure Artifacts 下载源代码。

这一切都完美无缺。

问题是生产力问题。如果需要更改 nuget 包中的代码,我必须打开 nuget 包的解决方案,进行更改、推送并等待 Azure 构建。构建后,我去 Nuget 包管理器,更新包,重新启动应用程序并“希望”解决了这个问题。对于一些棘手的事情,我可以循环这个过程几次,这是一个生产力杀手。

有没有办法从引用它的解决方案中直接在 nuget 包的解决方案中进行调试?或者是否有人有更好的流程,他们使用的效率更高?

0 投票
2 回答
311 浏览

visual-studio - 为什么我不能使用 sourcelink 调试我的 nuget 包?

我在我的 csproj 中启用了源链接并使用 github 操作来发布我的 nuget,但添加了PublishRepositoryUrl属性并引用了Microsoft.SourceLink.GitHub包。

但是,当我引用包时,我无法进入代码,也无法进行定义:

我错过了什么?所有源代码都可以在这里找到https://github.com/Liero/vNext.BlazorComponents

编辑:当我运行一个引用包的项目时,看起来符号是根据调试输出加载的:

我还在 Visual Studio 中禁用了我的代码调试。

如果有人想尝试,以下是重现的步骤:

  1. 在 Visual Studio 中创建新的 Blazor 项目

  2. 添加对 vNext.BlazorComponents 的包引用

  3. 修改 index.razor:

  4. 运行应用程序