关于如何在Nuget包中使用Symbols、Source files和Source Link进行调试,互联网上有几种记录在案的方法,但老实说,很难理解哪种方法对我来说是好的。
我们有一台Azure Nuget服务器,我们在其上生成DevOps包,同时使用构建管道中的described here任务将.pdb
文件发布到Azure DevOps符号服务器
我的项目‘在.csproj
文件中还引用了Microsoft.SourceLink.Vsts.Git
和以下代码
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
我读过几篇博客文章,但我最相信的更新来源当然是官方Source Link Git repository。
readme.md
文件说
通常不再推荐在.nupkg中包含PDB的
,因为这样会增加软件包的大小,从而恢复使用软件包的项目的时间,而不管用户是否需要通过库的源代码进行调试
我同意这一点,这就是为什么我要使用Symbol Server,而不是将.pdb
文件包含在Nuget包中。因此,请不要将我的问题标记为this one的副本,因为被接受的答案正是我不想做的。
自述文件还指出,
.snupkg符号包有一些限制:
所以至少我知道我不能用它。
但是什么才是正确的设置Source Link并工作的方法呢?
当我调试我的测试控制台应用程序时,它成功地将.pdb
文件下载到我的Symbols缓存文件夹中,但是如果我尝试使用F11
单步执行来自我的Nuget包的代码,它就不能工作。(但是,它会步入System.String.Concat
,因为我的简单测试Nuget包实际上是连接一些字符串)
我试图运行sourcelink test TestSourceLink.pdb
,但我得到了一个error: url hash does not match
。我在here上读到sourcelink test
是一个遗留的东西,不支持像我们这样的私有存储库的身份验证。
使用我的浏览器,如果我访问sourcelink print-json TestSourceLink.pdb
提供的网址,我可以看到最新的源代码。但现在的问题是,为什么Visual Studio无法下载源代码?我在VS中通过了这个Azure DevOps服务器的身份验证,因为我能够安装来自这个服务器的Nuget包。
以下是我的调试设置:
非常感谢。我真的搞不懂这块拼图缺失的部分是什么
https://stackoverflow.com/questions/54980381
复制相似问题