0

我有一个源索引 PDB,但 Visual Studio 在调试时不会尝试下载适当的源(使用 Fiddler 验证),即使它确实在符号缓存中创建了正确的目录结构(即在 src/ 子目录下)。为了解决我使用 srctool.exe 的问题:

srctool -x myfile.pdb

但是,这只会导致 URL 被列出;它不会尝试下载它们:

https://myurl.com/bitbucket/projects/BLAH/repos/MyRepo/browse/Src/SomeDir/SomeFile.cs?at=05bff5155beece6c7e6acde97f7aeefc7b65e2cf&raw
...
myfile.pdb: 20 source files were extracted.

pdbstr 的输出如下:

SRCSRV: ini ------------------------------------------------    
VERSION=2    
SRCSRV: variables ------------------------------------------
RAWURL=https://myurl.com/bitbucket/projects/BLAH/repos/MyRepo/browse/%var2%?at=05bff5155beece6c7e6acde97f7aeefc7b65e2cf&raw    
SRCSRVVERCTRL=https    
SRCSRVTRG=%RAWURL%    
SRCSRV: source files ---------------------------------------   
E:\AnotherDir\work\9f49bd3ba978a6f5\Main\Src\SomeDir\SomeFile*Src/SomeDir/SomeFile
...
SRCSRV: end ------------------------------------------------

如果有人能指出我正确的方向来弄清楚发生了什么,我将不胜感激。

4

1 回答 1

0

SRCSRV 不适用于查询 URL(请参阅此问题此问题)。

如果您使用的是公共 Bitbucket 存储库,则可以使用类似验收测试的模式;那是,

RAWURL=https://bitbucket.org/BLAH/MyRepro/raw/05bff5155beece6c7e6acde97f7aeefc7b65e2cf/%var2%

不过,我不确定私人 Bitbucket 安装是否支持这种语法。查看此问题以获取更多信息 - 从我的简短阅读来看,它们似乎支持不带查询字符串的原始文件,但尚不清楚您是否可以指定不带查询字符串的提交哈希。

从对其他问题的评论来看,一个常见的解决方法(对于私人 Bitbucket 安装)似乎是设置 url 重写或可以采用 SRCSRV 友好 URL 的小型直通 Web 服务。


关于srctool,我认为它的输出有点误导,但在技术上是正确的。对于 VS可以下载的正确源索引的 PDB,它的行为确实相同。

以这种方式映射SRCSRVTRG的 PDB 指定(目标)但不指定(SRCSRVCMD下载命令)。SRCSRV 应该检查目标并且 - 如果文件存在 - 它将执行下载命令

接下来,它使用 VAR1 将 SRCSRVTRG 变量扩展为 VARn。如果文件已经在这个位置,它会将位置返回给调用者。

否则,它会扩展 SRCSRVCMD 变量以构建从源代码管理中检索文件并将其复制到目标位置所需的命令。最后,它执行这个命令。

在这种情况下,目标是实际的 HTTPS URL。从技术上讲,文件已经“在”那个位置,所以 SRCSRV 只是返回文件位置,并srctool报告它已经在那里(带有误导性的“提取”消息)。

当 VS 确实下载文件时,它会将其存储在本地的符号缓存下,但这是此过程中的进一步步骤;将其存储在那里并不是绝对必要的。

于 2016-09-03T22:46:15.057 回答