我正在调试一个项目,它引用了我添加的DLL,DLL存储在外部目录中,我刚刚添加了一个引用。现在我当然可以调试我的项目,但是调用另一个DLL上的方法的行我不能单步执行,例如F12。
其中一种方法是将我的项目(dll)作为现有项目添加到我的解决方案中,并替换引用的dll以使用附加的项目而不是磁盘上的文件。
但是什么乱七八糟的,我肯定有更干净的办法?
我似乎记得我是否复制了一些PDB文件或什么,但我不记得了。我需要打开2个Visual Studio副本,1个用于我的主项目,1个用于我的引用DLL吗?
我正在调试一个项目,它引用了我添加的DLL,DLL存储在外部目录中,我刚刚添加了一个引用。现在我当然可以调试我的项目,但是调用另一个DLL上的方法的行我不能单步执行,例如F12。
其中一种方法是将我的项目(dll)作为现有项目添加到我的解决方案中,并替换引用的dll以使用附加的项目而不是磁盘上的文件。
但是什么乱七八糟的,我肯定有更干净的办法?
我似乎记得我是否复制了一些PDB文件或什么,但我不记得了。我需要打开2个Visual Studio副本,1个用于我的主项目,1个用于我的引用DLL吗?
5条答案
按热度按时间i5desfxk1#
在您自己的计算机上,以两柴模式重建第二个方案(让PDB中的档案路径是您计算机特有的)。
将.DLL和.PDB文件同时复制到您的references文件夹。Visual Studio将自动选取.PDB文件并使用文件路径显示源。
当指涉的组件是在其他位置建置时,您也可以使用符号服务器和来源服务器来达成此目的:http://msdn.microsoft.com/en-us/library/vstudio/ms241613.aspx
vi4fp9gy2#
我通过执行以下操作得到了解决方案
尝试禁用“仅我的代码”(JMC)。
工具-〉选项-〉调试器取消选中“仅启用我的代码”
xggvc2p63#
我有同样的问题,我解决了清理和重建解决方案。它将纠正引用。pdb文件中的位置,并击中断点在第二个项目。
nnsrf1az4#
当您进行两柴组建时,所有的dll和pdb档案都会建立在主项目中,因此应该不需要手动复制档案。
右键单击解决方案,选择“添加/现有项目...”导航到Class lib文件夹并选择proj文件(例如myproj.csproj)。这些文件不会被复制,只是被引用,您可以在IDE中打开类的源代码,并以正常方式设置断点,它就可以正常工作了。
rjee0c155#
Visual Studio 2022添加了一个新的顶级节点:
External Sources
到解决方案资源管理器,您将在调试模式下找到该资源管理器。您可以从那里查看所有加载的dll。您还可以在调试模式下查看从Debug -> Windows -> Modules
加载的模块。从那里,右键单击所需的dll,单击open file location
,然后将pdb文件复制到该位置。这将允许您单步执行外部dll的任何方法。参考:https://devblogs.microsoft.com/visualstudio/debugging-external-sources-with-visual-studio/