Visual studio Visual Studio调试器扩展性-如何跟踪VS调试器源文件路径重定向?

Visual studio Visual Studio调试器扩展性-如何跟踪VS调试器源文件路径重定向?,visual-studio,debugging,vsx,visual-studio-debugging,envdte,Visual Studio,Debugging,Vsx,Visual Studio Debugging,Envdte,我正在编写一个VS扩展名,它需要知道用户当前正在调试的文件的完整路径,并且我希望支持这样一种场景:在pdb中写入的源路径不正确,并且提示用户在其他地方查找该文件 如果我这样做: 1调试PDB指向位置a的代码文件的DLL 2将代码文件移动到不同的位置,B 3当出现“打开文件”对话框提示时,指示调试器在位置B找到代码 然后打开该文件,Visual Studio似乎记住了此重定向,即使在我重新启动它之后,也会知道在位置B中查找该文件 我的问题是,IDebugStackFrame2/EnvDTE.Sta

我正在编写一个VS扩展名,它需要知道用户当前正在调试的文件的完整路径,并且我希望支持这样一种场景:在pdb中写入的源路径不正确,并且提示用户在其他地方查找该文件

如果我这样做:

1调试PDB指向位置a的代码文件的DLL

2将代码文件移动到不同的位置,B

3当出现“打开文件”对话框提示时,指示调试器在位置B找到代码

然后打开该文件,Visual Studio似乎记住了此重定向,即使在我重新启动它之后,也会知道在位置B中查找该文件

我的问题是,IDebugStackFrame2/EnvDTE.StackFrame对象都为代码文件提供了旧的、不正确的路径,我需要正确的路径,以便从中读取源代码!Visual Studio是否以任何方式公开此间接表

如何获取源文件的文本


另外,我试图使用VsShellUtilities.OpenDocument方法使用旧的、不正确的路径,但它抛出了一个文件未找到方法。

从2开始,您也在重新编译吗?PDB本身具有到源的路径信息,您可以使用十六进制编辑器查看该信息。我认为,一旦调试器掌握了PDB以及其中指定的任何路径,您就不能更改源文件的路径。

从2开始,您也要重新编译吗?PDB本身具有到源的路径信息,您可以使用十六进制编辑器查看该信息。我认为,一旦调试器掌握了PDB以及其中指定的任何路径,您就无法更改到源文件的路径。

根本做不到………

根本做不到………

嗨,对不起,也许我的问题不够清楚-我知道PDB有到源文件的路径,我知道如何以编程方式阅读pdb。我不知道的是如何从VisualStudio获取路径,在这种情况下,在从pdb获取的路径中找不到代码文件,并且提示用户自己查找源文件。我不是在重新编译,我只是将文件移动到另一个位置,以模拟Visual Studio在pdb中编写的路径中找不到文件的情况。好的,非常感谢您的澄清抱歉,我的困惑。关于用户指定的路径,我永远无法让它工作,我只是使用VisualStudio对话框中的该路径将源文件复制到,但更改路径似乎不起作用。不确定我是否做错了什么,或者Visual Studio在这方面是否有问题。不确定哪里出了问题-它在VS2008和VS2010中对我很好。Hmmmmm,这里必须再次出现操作员错误。。。我必须重温这个特性,尽管我可能在一个愚蠢的大型解决方案文件上尝试过,其中VS的某些部分不起作用/不稳定。嗨,对不起,也许我的问题不够清楚-我知道pdb有到源文件的路径,并且我知道如何以编程方式读取pdb。我不知道的是如何从VisualStudio获取路径,在这种情况下,在从pdb获取的路径中找不到代码文件,并且提示用户自己查找源文件。我不是在重新编译,我只是将文件移动到另一个位置,以模拟Visual Studio在pdb中编写的路径中找不到文件的情况。好的,非常感谢您的澄清抱歉,我的困惑。关于用户指定的路径,我永远无法让它工作,我只是使用VisualStudio对话框中的该路径将源文件复制到,但更改路径似乎不起作用。不确定我是否做错了什么,或者Visual Studio在这方面是否有问题。不确定哪里出了问题-它在VS2008和VS2010中对我很好。Hmmmmm,这里必须再次出现操作员错误。。。我必须重新访问这个特性,尽管我可能在一个愚蠢的大解决方案文件上尝试过它,其中VS的某些部分不工作/不稳定。