ProGet 符号和源服务器:正确下载 pdb 但找不到源

问题描述 投票:0回答:1

我在使用 ProGet 和 VS2017/VS2019 重新保护源文件和符号时遇到问题。

我的场景如下

  1. 在我的电脑上开发测试程序集
  2. 在我们的 git 服务器上推送 mod 文件
  3. 在我们的 TeamCity (2019.1) 中获取模组文件
  4. 在 Release 模式下构建源码,将 AssemblyTest.symbols.nupkg 打包发布到 ProGet (5.2.3)
  5. 在 VS2017 中,我创建了一个测试控制台应用程序,通过 Package Reference 安装 AssemblyTest,我尝试简单地在我的代码中的类上按 F12 以显示源代码或进入调试模式。

我已经按照指南的建议配置了 VS2017 here

使用 -symbols 命令行参数启动 nuget pack 命令,并使用以下结构创建 symbol.nupkg

  • 包装
    • 服务
    • 元数据
      • ...
    • net472
      • 测试程序集.dll
      • 测试程序集.pdb
      • 测试程序集.xml
  • 源码
    • 属性
      • AssemblyInfo.cs
    • 测试类.cs

在我的代码中的 TestClass 上按 F12,pdb 已正确下载到

c:\users\me ppdata\local emp\symbolcache estassembly.pdb f5be5cd155e4400b9b18c0e1e6a05941 estassembly.pdb

并从我看到的 Visual Studio 输出窗口的下拉列表中选择 ReSharper 项目

PdbNavigator: Downloader: http://srv.symbolsource.org/pdb/Public/testassembly.pdb/bf5be5cd155e4400b9b18c0e1e6a05941/testassembly.pdb -> The remote server returned an error: (500) Internal Server Error. 
--OK, it's MS symbol server

PdbNavigator: Downloader: http://myproget/symbols/dev/testassembly.pdb/bf5be5cd155e4400b9b18c0e1e6a05941/testassembly.pdb -> ok, 15.5 KB
-- OK, it's our ProGet server

PdbNavigator: Searching for 'TestAssembly.TestClass' type sources in C:\Users\me\AppData\Local\Temp\SymbolCache\TestAssembly.pdb\bf5be5cd155e4400b9b18c0e1e6a05941\TestAssembly.pdb

PdbNavigator: Downloader: http://myproget/source-files/dev/TestAssembly/1.0.0.10/TestClass.cs -> The remote server returned an error: (404) Not Found.
-- Here we come :(

PdbNavigator: No sources found in debugging information for 'TestAssembly.TestClass' in assembly 'TestAssembly, Version=1.0.0.10, Culture=neutral, PublicKeyToken=null'

在我的符号缓存文件夹中有一个具有此路径的子文件夹

C:\Users\me\AppData\Local\Temp\SymbolCache\src\source-files\dev\TestAssembly .0.0.10

但是没有源文件。

查看 pdb 文件,我发现了

SRCSRV: ini ------------------------------------------------
VERSION=2
INDEXVERSION=2
VERCTRL=http
SRCSRV: variables ------------------------------------------
SRCSRVVERCTRL=http
PGSERVER=http://myproget/source-files
PGFEED=dev
PGPKGID=TestAssembly
PGPKGVER=1.0.0.10
HTTP_EXTRACT_TARGET=%pgserver%/%pgfeed%/%pgpkgid%/%pgpkgver%/%var2%
SRCSRVTRG=%http_extract_target%
SRCSRVCMD=
SRCSRV: source files ---------------------------------------
c:\buildagent\work\b5cfc05c815c43d9\testassembly\testclass.cs*TestClass.cs
SRCSRV: end ------------------------------------------------

所以,我的问题是:如何从ProGet正确下载源文件? 我的场景出了什么问题?

谢谢!

法布里齐奥

visual-studio teamcity symbols pdb-files proget
1个回答
0
投票

从 ProGet 的角度来看,在以下任何情况下,

/source-files/*
端点将返回 404:

  • 找不到提要名称(即您示例中的
    dev
  • 提要不是 NuGet 提要
  • 没有为提要启用符号服务器
  • /source-files
    URL 中缺少包版本
  • 包版本不是有效的 NuGet 版本(1.0.0.10 看起来不错)
  • 文件本身(即您示例中的 TestClass.cs)在包内的
    /src
    文件夹下找不到

话虽这么说,您能否使用此包的 1.0.0.10 版的“文件”选项卡在提要本身中验证这些源文件是否存在?我知道如果在符号包之后推送正常的非符号包,它可以覆盖它,从而有效地删除那些文件。

© www.soinside.com 2019 - 2024. All rights reserved.