>我在使用 ProGet 和 VS2017/VS2019 重新保护源文件和符号时遇到问题。
我的方案如下
- 在我的电脑上开发测试程序集
- 在我们的 git 服务器上推送模组文件
- 在我们的团队城市 (2019.1) 中获取模组文件 在
- 发布模式下构建源代码,在 ProGet 上打包并发布 AssemblyTest.symbols.nupkg (5.2.3) 在
- VS2017中,我创建了一个测试控制台应用程序,通过包引用安装AssemblyTest,我尝试简单地在代码中的类上按F12以显示源代码或在调试模式下单步执行。
我已经按照指南的建议配置了VS2017
nuget pack 命令是使用 -symbol 命令行参数启动的,symbol.nupkg 是使用以下结构创建的
- 包
- 服务
- 元数据
- 。
- 自由
- 净472
- 测试组装.dll
- 测试组装.pdb
- 测试组装.xml
- 净472
- 来源
- 性能
- 组装信息.cs
- 测试类.cs
- 性能
在我的代码中按 TestClass 上的 F12 pdb 已正确下载
C:\USERS\ME\AppData\local\temp\SymbolCache\TestAssembly.pdb\BF5Be5CD155E4400b9B18C0E1E6A05941\testAssembly.pdb
并选择 ReSharper 项目从我看到的 Visual Studio 中输出窗口的下拉列表中形成
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:UsersmeAppDataLocalTempSymbolCacheTestAssembly.pdbbf5be5cd155e4400b9b18c0e1e6a05941TestAssembly.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:buildagentworkb5cfc05c815c43d9testassemblytestclass.cs*TestClass.cs
SRCSRV: end ------------------------------------------------
所以,我的问题是:如何从ProGet正确下载源文件? 我的方案中出了什么问题?
谢谢!
法布里齐奥
从 ProGet 的角度来看,在以下任何情况下,/source-files/*
终结点都会返回 404:
- 源名称(即
dev
在您的示例中)未找到 - 源不是 NuGet 源
- 未为源启用符号服务器
/source-files
URL 中缺少包版本- 包版本不是有效的 NuGet 版本(1.0.0.10 看起来正常)
- 文件本身(即在您的示例中为 TestClass.cs)在包中的
/src
文件夹下找不到
话虽如此,您能否使用此软件包版本 1.0.0.10 的"文件"选项卡在源本身中验证这些源文件是否存在?我知道如果将普通的非符号包推送到符号包之后,它可以覆盖它,从而有效地删除这些文件。