Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tfs 在Visual Studio中使用符号服务器/源索引调试生成_Tfs_Visual Studio 2013_Tfsbuild - Fatal编程技术网

Tfs 在Visual Studio中使用符号服务器/源索引调试生成

Tfs 在Visual Studio中使用符号服务器/源索引调试生成,tfs,visual-studio-2013,tfsbuild,Tfs,Visual Studio 2013,Tfsbuild,我使用VisualStudio 2013和Team Foundation Server 2013。我有这些,还有构建控制器/代理,运行在我的个人计算机上,名为“FUSROHDAH” 我的目标是获取由TFS构建代理生成的构建,并在Visual Studio中打开它进行调试,并让它利用源代码索引PDB从TFS源代码管理系统访问源代码,以便我可以逐步完成代码。我研究了几篇关于PDB和源索引的信息性文章,包括: 我还观看了John Robbins在WintellectNOW上的精彩视频,其中讨论了设

我使用VisualStudio 2013和Team Foundation Server 2013。我有这些,还有构建控制器/代理,运行在我的个人计算机上,名为“FUSROHDAH”

我的目标是获取由TFS构建代理生成的构建,并在Visual Studio中打开它进行调试,并让它利用源代码索引PDB从TFS源代码管理系统访问源代码,以便我可以逐步完成代码。我研究了几篇关于PDB和源索引的信息性文章,包括:

我还观看了John Robbins在WintellectNOW上的精彩视频,其中讨论了设置符号服务器、源索引的许多细微差别

然而,尽管拉扯了好几天的头发,我还是没能让它工作

我已经为持续集成设置了TFS。以下是我的设置:

在“生成定义->生成默认值”中,我已将暂存位置设置为“将生成输出复制到以下放置文件夹(UNC路径,如\server\share)”:

\\fusrohdah\builds(这相当于我的计算机上的c:\builds)

生成定义->流程模板设置:

发布符号的路径:\\fusrohdah\Symbols\(这相当于我的计算机上的c:\Symbols)

我注意到TFS 2013中的默认流程模板看起来与讨论TFS 2010的文章不同。在Ed Squared的文章中,有一个“索引源”选项。在TFS 2013中,此设置已消失,并且在指令文本中,它表示“指定符号存储共享的路径。设置此值时,源索引是生成的一部分”。因此,我假设通过简单地指定此位置,在生成上运行源索引

因此,我采用了一个简单的控制台应用程序HelloWorld,并执行了一系列更改和签入。我观察到,正如我所期望的那样,构建被发布到builds文件夹中,同时有一个EXE和PDB文件

因此,我想采用一个较旧的构建并在VisualStudio中调试它,然后逐步完成从TFS源索引中获得的源代码。我在VisualStudio中打开EXE并点击F11启动控制台应用程序,然后开始进入Main()过程中的代码。但是,当这种情况发生时,我得到了这样的信息:

---------------------------Microsoft Visual Studio ---------------------------源文件:C:\builds\2\LocalTestProject\HelloWorld\src\HelloWorld\HelloWorld\Program.cs

模块:C:\builds\HelloWorld\HelloWorld\U 20140722.6\HelloWorld.exe

进程:[6016]HelloWorld.exe

源文件与生成模块时不同。你愿意吗 喜欢调试器使用它吗

这似乎是我问题的症结所在。我的理解是,当Visual Studio读取我的PDB文件时,它应该执行TF.exe以从TFS获得正确版本的源代码,但它似乎没有做到这一点。我使用PDBStr.exe查看由构建发布的PDB文件,似乎没有任何问题:

c:\builds\HelloWorld\HelloWorld_20140722.6>pdbstr -r -p:helloworld.pdb -s:srcsrv

SRCSRV: ini ------------------------------------------------
VERSION=3
INDEXVERSION=2
VERCTRL=Team Foundation Server
DATETIME=Tue Jul 22 23:04:51 2014
INDEXER=TFSTB
SRCSRV: variables ------------------------------------------
TFS_EXTRACT_CMD=tf.exe view /version:%var4% /noprompt "$%var3%" /server:%fnvar%(
%var2%) /console >%srcsrvtrg%
TFS_EXTRACT_TARGET=%targ%\%var2%%fnbksl%(%var3%)\%var4%\%fnfile%(%var5%)
SRCSRVVERCTRL=tfs
SRCSRVERRDESC=access
SRCSRVERRVAR=var2
VSTFSSERVER=http://fusrohdah:8080/tfs/DefaultCollection
SRCSRVTRG=%TFS_extract_target%
SRCSRVCMD=%TFS_extract_cmd%
SRCSRV: source files ---------------------------------------
C:\Builds\2\LocalTestProject\HelloWorld\src\HelloWorld\HelloWorld\Program.cs*VST
FSSERVER*/LocalTestProject/HelloWorld/HelloWorld/Program.cs*18*Program.cs
SRCSRV: end ------------------------------------------------
我在输出窗口中观察到,当我调试EXE时,Visual Studio认为它已成功加载符号但是,我没有看到一条消息表明它运行了TF.exe,因此我认为它无法运行此命令来获取源代码。

我确实在VisualStudio中验证了是否已取消选中“仅启用我的代码”和“启用源服务器支持”以及“将源服务器诊断消息打印到输出窗口”

问题:我如何知道Visual Studio是否正试图运行TF.exe以像我预期的那样从TFS获取源代码


除此之外,我不确定我的问题是构建配置、符号服务器/源服务器配置,还是我尝试使用前面提到的部分进行调试的方法。我将向能为我照亮道路的巫师宣誓效忠

调试前是否尝试删除生成服务器工作目录?如果调试器可以在磁盘上找到SRCSRV中表示的文件,那么它将优先于使用tf.exe获取这些文件(即使它们的版本匹配错误)。只有在磁盘或缓存中找不到文件时,才会尝试引用源服务器。因为您是在buildserver上执行此操作,所以这些位置表示源代码的更高版本。

您是否已在Visual Studio中设置了符号服务器的位置。工具>选项>调试>符号?@JustTFS:是的,我将我的\u NT\u SYMBOL\u PATH环境变量设置为:SRVC:\MYSYMBOLS\PUBLIC*\\fusrohdah\symbols;SRVC:\MYSYMBOLS\PUBLIC:\MYSYMBOLS\PUBLIC*您是否在visual studio中添加了符号路径?这对我来说很有用,我甚至用这个设置进行了远程调试。有关于这个主题的更新吗?我对TFS Build vNext和Visual Studio 2015也有同样的问题。在输出窗口中,我读到“源文件已更改。它不再与用于构建正在调试的应用程序的文件版本匹配”。如果遇到断点,则一切正常,但我无法读取变量内容。在监视窗口中,我读到:表达式计算器中的内部错误。这应该如何工作?我正在使用Visual Studio 2013和Team Fundation Server 2012,并且能够执行此操作。我希望这不是您正在使用的新版本的倒退。