0

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

我的情况如下

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

我已经按照指南在这里的建议配置了 VS2017

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

  • 包裹
    • 服务
    • 元数据
      • ...
    • 网472
      • 测试程序集.dll
      • 测试程序集.pdb
      • 测试程序集.xml
  • 源代码
    • 特性
      • 装配信息.cs
    • 测试类.cs

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

c:\users\me\appdata\local\temp\symbolcache\testassembly.pdb\bf5be5cd155e4400b9b18c0e1e6a05941\testassembly.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\1.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 正确下载源文件?我的场景有什么问题?

谢谢!

法布里齐奥

4

1 回答 1

0

From ProGet's perspective, a 404 is returned by the /source-files/* endpoint in any of the following cases:

  • the feed name (i.e. dev in your example) is not found
  • the feed is not a NuGet feed
  • the symbol server is not enabled for the feed
  • the package version is missing from the /source-files URL
  • the package version is not a valid NuGet version (1.0.0.10 looks OK)
  • the file itself (i.e. TestClass.cs in your example) is not found under the /src folder within the package

That being said, can you verify in the feed itself that those source files are present using the Files tab for version 1.0.0.10 of this package? I know if the normal, non-symbols package is pushed after the symbols one, it can overwrite it which effectively removes those files.

于 2019-05-31T14:49:19.437 回答