我已将我的团队使用的库放入 nuget 包中,该包从 TeamCity 部署到网络文件夹中。但我无法调试这段代码! SymbolSource 是我读过的一种解决方案,但我更愿意找到某种方法来直接从 TeamCity 访问 .pdb/源文件。有谁知道如何做到这一点?
Edit.当我检查时'Include Symbols and Source'
在 Nuget Pack 构建步骤中,除了网络文件夹中的 .nupkg 文件之外,TeamCity 还会创建一个 .Symbol.nupkg。 .Symbol.nupkg 包含 src 和 .pdb 文件。
Edit.我未选中'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>
这在 nuget 包中添加了 dll、pdb 和我的库的源文件,并且没有生成 .Symbols 文件,我认为该文件仅适用于符号服务器。
传统方法
- 将 pdb 与 dll 一起放入 NuGet 包中。
- 将源代码添加到引用该包的解决方案的调试源文件中。
这意味着您将能够单步执行代码并查看异常,但您可能必须在磁盘上找到一个文件并将其打开,然后才能设置断点。显然,您需要注意源代码的版本是否正确。
步骤的更多细节
如果您当前在没有 Nuspec 的情况下进行打包,则需要创建一个 Nuspec,然后将 pdb 添加到 lib 文件夹中的文件列表中,“NuGet spec”可能是生成初始规范的有用命令,如NuGet 文档 http://docs.nuget.org/docs/reference/nuspec-reference。然后确保 Team City Nuget Pack 步骤引用您的新 nuspec。
有关步骤 2 的更多详细信息
打开解决方案后,右键单击“解决方案”,选择“属性”...“通用属性”...“调试源文件”,然后添加相关二进制引用的根源目录。或者看MSDN http://msdn.microsoft.com/en-us/library/ms241613.aspx#BKMK_Find_source_files。
请注意,调试时无法打开解决方案属性。
仍然没有达到断点?
Try disabling this from Tools->Options:
公共或私人回购的现代方式
为了确保源代码的确切版本可用,请在构建时嵌入它。
从 Visual Studio 2017 15.5+ 开始,您可以添加 EmbedAllSources 属性:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<EmbedAllSources>true</EmbedAllSources>
公共回购的现代方式
为了保持你的 nuget 和库的大小较小,你可以使用源码链接包 https://github.com/ctaggart/SourceLink#embedding-source-files.
它生成一个 pdb,将调试器定向到来自 VCS 提供商(例如 GitHub、BitBucket)的正确版本的文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)