我已将我的团队使用的库放入从TeamCity部署到网络文件夹的nuget包中.我虽然无法调试这段代码!SymbolSource是我读过的一个解决方案,但我更愿意找到一些方法直接从Teamcity访问.pdb /源文件.有谁知道如何做到这一点?
编辑. 当我签'Include Symbols and Source'入Nuget Pack构建步骤时,除了网络文件夹中的.nupkg文件之外,TeamCity还会创建.Symbol.nupkg..Symbol.nupkg包含src和.pdb文件.
编辑. 我'Include Symbols and Source'在TeamCity上取消选中并将以下内容添加到我的nuspec文件中:
<files>
<file src="..\MyLibrary\bin\release\MyLibrary.dll" target="lib\net40" />
<file src="..\MyLibrary\bin\release\MyLibrary.pdb" target="lib\net40" />
<file src="..\MyLibrary\*.cs" target="src" />
<file src="..\MyLibrary\**\*.cs" target="src" />
</files>
Run Code Online (Sandbox Code Playgroud)
这在nuget包中添加了我的库的dll,pdb和源文件,并且没有生成.Symbols文件,我认为这只是符号服务器所需要的.
在Visual Studio 2015和.NET Core开发中,我们可以通过从源(例如GitHub)检索源代码到本地磁盘来调试nuget包,在global.json中添加下载源代码的源路径并引用nuget包中的我们的项目.这导致对下载的源代码中的项目的引用在当前解决方案中自动显示,从而可以轻松调试(有关此功能的更多信息,请参阅本文).
有没有人知道如何使用Visual Studio 2017做同样的事情?由于global.json不见了,我找不到任何解决方案.
互联网上有几种关于如何使用符号源文件和Source Link在Nuget包中进行调试的记录方法,但说实话,很难理解什么对我来说是好方法。
我们有一个Azure DevOps服务器,在其上生成Nuget程序包,同时.pdb使用Index Sources & Publish Symbols构建管道中的任务将文件发布到Azure DevOps Symbol Server ,如下所述
我的项目中也有Microsoft.SourceLink.Vsts.Git对此.csproj文件的引用和此代码
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
Run Code Online (Sandbox Code Playgroud)
我看过几篇博客文章,但是我最信任的最新资源当然是官方的Source Link Git仓库。
该readme.md文件说
通常不建议在.nupkg中包含PDB,因为这会增加包的大小,从而为使用您的包的项目恢复时间,无论用户是否需要通过库的源代码进行调试
我同意这一点,这就是为什么我要使用Symbol Server而不.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 Package实际上是连接一些字符串,所以它介入了)
我试着跑步sourcelink test TestSourceLink.pdb但得到了error: url …
debug-symbols visual-studio nuget-package sourcelink azure-devops
我正在尝试在 Visual Studio 中调试调用 dll 的 exe。我确保相应的 pdb 与 dll 位于同一路径中。
但我无法进入 dll 提供的功能。我收到一条消息“未找到 xyz.c”
为什么我会收到此消息?
这是否意味着我无法仅从 DLL + .PDB 进入源代码?使用 /Z7 选项构建的静态库 (.lib) 怎么样?
我和我的团队构建了我们自己的框架,我们在许多项目中使用。我们曾经将框架的项目包含在所有其他项目中,但后来我们决定将框架放入 nuget 服务器上的 nuget 包主机中,以便我们可以在开发过程中更轻松地进行版本控制和传播框架。
一切都工作正常,除了但有一些明显的副作用。
Visual Studio 无法直接查看 nuget 的 dll 本身,因此 VS 搜索引擎无法查找我的 nuget 中存在的函数。出于同样的原因,我认为我无法再在项目中看到框架的源代码,只显示元数据。
我知道 nuget 包不显示其自己的源代码是正常行为,但我想知道是否可以将 nuget 包设置为“可信模式”,以便 Visual Studio 能够搜索其中的函数开发人员能够直接查看源代码(当然无法编辑它)。
多谢。
我有一个 web 项目,它从客户端代码发布到外部 dll 中的一个方法,我有这个外部 dll 的源代码文件和 pdb 文件。我想做的是使用源代码文件和 pdb 调试外部 dll。Visual Studio 并没有停止说没有为模块加载任何符号。
c# visual-studio-2010 visual-studio pdb-files visual-studio-2012
c# ×2
debugging ×2
nuget ×2
.net ×1
.net-core ×1
azure-devops ×1
c++ ×1
deployment ×1
dll ×1
pdb-files ×1
sourcelink ×1
teamcity ×1