我使用 NuGet.org 上的说明为我的每个开源 DLL 创建符号包。例如,我曾经nuget pack -Version 2.4.3 -symbols Core\Loyc.Essentials.nuspec
创建Loyc.Essentials.2.4.3.nupkg
和Loyc.Essentials.2.4.3.symbols.nupkg
.
将 .nupkg 重命名为 .zip,我验证了该.symbols.nupkg
包是否包含预期的 .dll、.pdb 和 .xml 文件,以及文件夹lib\net45
中的完整源代码。src
我使用 AppVeyor 使用类似的nuget
命令构建我的包,并使用以下选项发布符号和非符号包:
deploy:
- provider: NuGet
server:
api_key:
secure: DHTp3wMjKqyca2PWftol2wq7DxE9KdL8AizHVIS14T4DSSMXgc0bIiCGvvA8SkTH
skip_symbols: false # Whether to not publish symbol pkgs (src/pdb)
artifact: /.*\.nupkg/
on:
branch: master # Release from master branch only.
appveyor_repo_tag: true # Deploy on tag push only.
它似乎工作:
Publishing Loyc.Essentials.24.3.0.nupkg to https://www.nuget.org/api/v2/package...OK
Publishing Loyc.Essentials.24.3.0.symbols.nupkg to https://nuget.smbsrc.net/api/v2/package...OK
我创建了一个测试项目,通过 VS NuGet GUI 添加了我的包。
最后,我按照这里有关如何使用符号服务器的详细说明进行操作。根据nuget.org 的建议,我还将https://nuget.smbsrc.net添加到 VS 调试选项中的“符号文件 (.pdb) 位置”列表中 | 符号。
它不起作用。我注意到在 SymbolCache 中有一个FailedLoads
文件夹,其中包含我的每个 DLL(和 NUnit)的文本文件。文本文件仅包含“未找到 PDB”。为什么可能找不到 PDB?