我为我当前的一个项目设置了一个符号服务器。 在夜间建造中我:
(事实上,我已经遵循了这篇文章:Source Server helps you kill bugs。
现在,我已经引用了在其他项目中发布其符号的DLL。 我调试该项目,我想进入已发布调试符号的项目代码。
我已经设置了VS.NET,因此启用了Source Server支持。 当我调试我的项目时,我可以看到(在模块窗口中)我的引用项目的符号确实已经加载。 当我想进入一个源自引用的DLL的方法时,VS.NET会弹出警告,我必须确认VS.NET确实可以执行命令从源服务器获取源代码。
命令如下所示:
ss.exe get -GL"c:\Users\... -GF -I-Y -W "$/MyProject/Source/..." -VL"specificversion"
(我已经省略了简洁的完整路径)。
当我运行命令时,我收到错误“没有源代码可用”。
当我在命令行上执行该命令时,出现错误:
无效的DOS路径
当目标路径不存在时,似乎VSS返回此错误。实际上,我的磁盘上不存在应该放置检索到的源文件的本地路径。 VSS应该创建它。
如何确保VS.NET发出命令,以便在从源服务器检索源代码时创建目标路径?
修改
在我的任务中,我已经设法进一步了解。
在我的源服务器计算机上,我编辑了vss.pm
文件,并且我已经更改了写在PDB文件中的'stream'内存在的VSS_EXTRACT_CMD
变量中的命令。
我把(Perl?)代码更改为:
push(@stream, "VSS_EXTRACT_CMD=if not exist %vsstrgdir% mkdir %vsstrgdir% | ss.exe get ".
"-GL\"%vsstrgdir%\" -GF- -I-Y ".
"-W \"\$/%var3%\" -VL\"%var4%\"");
所以,事实上我已经添加了'if not exists ... mkdir ...'部分,我用管道(|)分隔了两个命令。
在VS.NET中,我已经指定VS.NET发出的SourceServer命令也应该写在输出窗口中。 因此,当我复制在输出窗口中找到的命令,并在命令提示符下执行该命令时,将创建目录并检索文件。 \ O /
不幸的是,当VS.NET执行此操作时,不会检索该文件,并且还没有创建该目录... 关于问题可能是什么想法?
修改 我已经在Windows XP机器上测试了它,并且它可以工作。 我在办公室使用Windows Vista,而在Vista上,它不起作用。 似乎VS.NET不允许创建目标目录?