【发布时间】:2012-09-07 03:03:07
【问题描述】:
在我正在处理的团队项目中,如果解决方案中存在另一个同名文件,则在文件中设置断点(例如 IdeasController.cs)将导致调试器行为不稳定。我已经在几个开发人员的工作站上重现了这个问题。
示例
我在我们的 Web API 中的IdeasController.cs 中设置了一个断点:
另一个名为 IdeasController.cs 的文件存在于我们单独的 MVC 4 Web 项目中。在下面的屏幕截图中,调试器显示了Api->IdeasController 源代码,但行高亮与Web->IdeasController 的代码结构匹配。断点是重复的,其中一个位于注释块的中间。
断点窗口同时显示两个文件中的断点:
在某些工作站上,调试器会逐步执行正确的行(无论行高亮如何);在其他人身上,它会愉快地穿过不相关的线条(包括 cmets 和空白)。我猜这取决于它选择显示的源文件。
我尝试过的
我浏览了互联网。当调试文件(*.pdb)、源文件和编译代码不匹配时,似乎会出现这种问题。有很多可能的原因:重复的文件名(可能会混淆调试器[5])、过时的项目构建文件、无效的解决方案缓存或不正确的构建配置。
这些是我找到并尝试过的解决方案:
- 检查了我的构建配置。
- 确保项目不是在发布模式下构建的。
- 确保我们don't have code optimization enabled。
- 确保项目的调试模块已正确加载。 (开始调试项目并检查
Debug>Windows>Modules。两个程序集都已列出,未优化,并且符号状态为“已加载符号”。)
- 重置调试元数据和 Visual Studio 缓存。
这些都没有任何效果。我可以重命名其中一个文件(不重命名类)以临时解决该问题,但这远非理想。
我现在在哪里
我最新的 Google 搜索的第 14 页。建议将不胜感激。 :)
【问题讨论】:
-
是的,真的很烦人。这个错误至少从 Visual Studio 2008 开始就存在。我知道的唯一解决方法是重命名源文件,就像你自己发现的那样。
-
有趣的是,文档中提到了这个错误:msdn.microsoft.com/en-us/library/h6aesyw2%28v=vs.100%29.aspx。但是他们建议的解决方法(手动输入源文件的完整路径)似乎不起作用,至少在 VS 2013 U2 中对我来说是这样。
-
在 Visual Studio 2015 中仍然存在
标签: visual-studio debugging msbuild visual-studio-2012 debug-symbols