在 Visual Studio 2012 中无法打开随机的 CS 文件

12

现在我有一个难题。我使用Visual Studio 2012开发我的应用程序,一直无误。今天我打开VS,像往常一样打开所有文件(cs文件),按下开始调试按钮后,出现了 xxx.cs 找不到的错误。

| 源未找到 | <-该标签

xxx.cs 文件未找到

您需要找到 xxx.cs 才能查看当前调用堆栈帧的源代码。

请尝试以下选项之一:

源搜索信息

正在定位 '[PATH]\xxx.cs' 的源代码。检验和 MD5 {14 3a e d4 8d 6c e5 0 e2 56 3e 4b 3 dc 22 7a}

确定校验和是否与以下位置匹配:

1: [PATH]\xxx.cs 校验和 MD5 {14 3a e d4 8d 6c e5 0 e2 56 3e 4b 3 dc 22 7a} 校验和匹配。

文件 '[PATH]\xxx.cs' 存在。

调试器在以下位置找到了源代码:

1: [PATH]\xxx.cs 校验和为 {14 3a e d4 8d 6c e5 0 e2 56 3e 4b 3 dc 22 7a}

调试器将使用位置1的源代码。

现在,如果我点击链接文本浏览文件,什么也不会发生。我停止调试并双击 xxx.cs 文件,同样什么也没有发生。

我可以点击其他 cs 文件,有些可以工作,有些则不能。似乎完全是随机的...... 有人以前遇到过这种情况吗?
我通过“工具|导入和导出设置”重置了所有设置,但并没有解决问题。
xxx.cs 和所有其他文件都包含数据(至少 VS 应该打开一个空文件!),我非常困惑发生了什么...... 有什么想法吗?
敬礼,
安东尼奥

听起来像是项目解决方案不再包含那些文件(已移动或删除),但您的解决方案资源管理器尚未同步这些更改,因此导致错误。 - Greg
你能否在另一个文本编辑器中打开文件(使用VS中的路径)?你能修改/保存它们吗? - DSway
对你的所有代码进行一次干净的重建。听起来调试数据库已经损坏或与源代码不同步。 - Jason Williams
Greg/DSway...这些文件仍然存在,我可以通过Windows资源管理器在Visual Studio 2005和记事本中打开它们。 Jason...我应该在帖子中提到我已经清理并重新构建了代码,但仍然出现错误...有没有办法手动重新同步调试数据库? - InfOracle
1
即使调试停止后...我仍然无法在调试模式下打开出现问题的cs文件。 右键单击打开失败。 右键单击选择“使用”打开。如果我选择C#编辑器(默认),它会失败。如果我选择记事本,那就可以了。太奇怪了。 - InfOracle
显示剩余12条评论
6个回答

4
我曾经在VS 2012中遇到过这个问题,虽然我没有找到根本原因(我觉得这是Visual Studio的一个bug,因为在同样的项目中,它不会发生在2010版本),但我找到了如何关闭烦人的症状并继续调试。在“工具”-〉“选项”-〉“调试”-〉“常规”中有一个选项可以关闭校验和文件检查:

要求源文件与原始版本完全匹配 告诉调试器验证源文件是否与用于构建你正在调试的可执行文件的源代码版本相匹配。如果版本不匹配,将提示你找到匹配的源。如果找不到匹配的源,则在调试期间不会显示源代码。

http://msdn.microsoft.com/en-us/library/85yzd16c.aspx

缺点是,如果你在受此问题影响的特定文件中设置了断点,那么你可能会发现VS无法跟踪该文件,因此只有在你不想调试出问题的文件时才应使用此选项(个人意见)。

我会在发现更多信息后更新我的答案。


3

在我的情况下,文件包含一些Unicode字符或其他编码,可能是由于文件损坏导致的。我通过右键单击->选择“使用编码打开C#编辑器”选项来解决问题。需要注意的是,这会提示是否应该自动检测编码,每次都会很烦人,但希望您能找到有问题的字符并进行修复。


1

我也遇到了Visual Studio 2013(又名版本12.0)的这个问题,让我抓狂。修复、卸载、重新安装、删除.dlls、.csprojs、.suos、清理、重建。都没有帮助。在重新安装Windows之前最后一招,我按照以下步骤成功解决了问题:

  • 通过Windows的添加/删除功能删除VS。
  • 删除所有在%AppData%,%ProgramData%和Program Files(x86)中引用Visual Studio 12.0的文件和文件夹(卸载后还剩下13k个文件,总共200 MB+
  • 重新启动
  • 运行CCleaner的文件和注册表清理工具
  • 使用regedit搜索“Visual Studio 12”和“12.0”,实质上删除所有引用Visual Studio 12.0的键/文件夹(只保留纯文件引用,因为数量太多)
  • 重新启动,再次运行CCleaner,重新启动。
  • 重新安装Visual Studio 2013,将路径从“... 12.0”更改为“... 12”。
  • 手动应用一个Windows补丁(KB2664825),在安装过程中某种方式失败了。

完成了,并且它起作用了!

顺便说一下,我的VS2010和VS2012的并行安装在我遇到VS2013问题的任何时候都没有受到影响。


这真的对我很有帮助。谢谢。 - carlosherrera

0

0

嗯,这可能没有解决你的问题,但我所做的是删除我的 .suo 文件,并且它不再提示我已经不存在的文件。

我在这里发布这篇文章,希望能对其他人有所帮助。


0
我曾经遇到过同样的错误,原因是一个项目中的dll文件没有与另一个项目的依赖项保持同步。我尝试了重建、删除bin文件、清除缓存等方法,但都没有解决我的问题。
以下是我的情况的简单示例。项目A依赖于项目B。每当项目A在调试过程中调用项目B中的方法时,我就会收到这个错误。
以下是解决我的问题的方法:
  • 将项目A和项目B放入同一个VS解决方案中。(如果您有许多相互依赖的项目,可以将它们全部放在同一个解决方案中,我实际上有9个)
  • 清理并构建两个项目。(以便在新解决方案中同步它们)
  • 将启动项目设置为项目A(或您之前尝试调试的任何项目)。
现在,您应该能够逐步执行两个项目的代码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接