Visual Studio 2015项目无法在调试模式下运行。

104
即使在调试配置下运行,我仍然得到了这个结果:

我得以显示此内容是通过启用“仅我的代码”并在启动时警告如果没有用户代码。这是最近发生在我们项目中的事情,我不确定我们做了什么导致了这种情况。但我一直无法解决它。断点不会触发,快速监视给出了奇怪的结果。
我尝试过谷歌搜索该问题,但标准的“断点不会触发”的解决方案都没有起作用。我已经没招了。
我已检查配置管理器,每个项目也设置为调试模式。

Enter image description here

我关闭了“启用优化”选项,不再弹出“您正在调试发布版本”的对话框。现在可以使用断点运行和停止程序了!然而,输出窗口在启动时显示以下内容:
模块“Navigo.exe”的符号未加载。 1. 使用调试构建配置或禁用调试选项“仅限我的代码”。 2. 检查调试选项下的“符号”设置。
这解决了我无法使用断点和弹出窗口的主要问题。奇怪的是,我认为需要加载符号才能使用断点。那么如果符号没有加载,断点如何工作呢?也许这只是一条错误的消息?

简而言之,您遇到了某种我们不知道的问题。然后您更改了全局调试器设置,现在您有两个问题。请将所有内容恢复到原来的状态,并描述您的第一个问题。 - Hans Passant
@HansPassant 这是原始问题。似乎在我们升级到使用VS2015后开始出现这个问题。在发布之前,我已经撤销了任何“这会起作用吗”的更改。取消选中“优化代码”似乎有所帮助。请参见问题的更新2以获取更多详细信息。 - Sen
你能详细说明一下你的解决方案吗?有哪些项目,使用了哪些编程语言,它们的目标是什么,哪个是启动项目? - Lucian Wischik
重新启用“仅限我的代码”选项。您正在尝试调试未附带源代码的引用程序集? - Igor Quirino
3
如果您想赞同与此问题相关的错误报告,请点击链接。https://connect.microsoft.com/VisualStudio/feedback/details/2116788/flag-optimize-is-passed-to-the-debugger-even-while-the-build-settings-optimize-code-is-not-enabled-on-mvc-c-web-projects-when-using-just-my-code - Patrick
23个回答

2

我尝试了这个列表中的几乎所有方法,最终通过打开解决方案属性并从“多个启动项目”切换到“单个启动项目”,然后再切换回“多个启动项目”来解决了问题。

  1. 右键单击解决方案,选择“属性”
  2. 在“常规属性”下,将选择“多个启动项目”更改为“单个启动项目”
  3. 点击确定
  4. 运行调试
  5. 结束调试,重复步骤1-3,但切换回“多个启动项目”
  6. 使用多个项目再次运行调试

2

我也遇到了同样的问题... 无论我做了什么 - 都没有用。

问题出在一个新建的空项目上。最终,我删除了该项目并添加了一个新项目 - 新项目需要另外命名;如果我使用相同的名称,错误会再次出现 - 即使重新启动、清理和重建... 这一定是Visual Studio 2015中的一个bug。


1
在我的情况下,我正在开发一个 VSTO 插件,用于 Outlook,而 Outlook 在测试我的安装程序时意外加载了最近安装的 Release 版本的 DLL 文件。看起来 Visual Studio 试图使用该 DLL 文件,而不是我预期的 Debug 版本。解决 Outlook 加载哪个 DLL 文件就为我解决了这个问题。

1

这里复制我的另一个回答。

正如@romanoza所提到的,微软已经更新了错误报告,并提供了以下信息:

取消选择设置调试 -> 选项 -> 在模块加载时抑制JIT优化(仅托管)

这是解决方法。他们后来继续说:

我们建议将其保持未选中,因为保持未选中将在特定情况下改善性能和代码行为。

最后,致谢:

如果一些客户仍然想要打开该设置进行调试,则无法使用该设置是一个错误,我们正在为这种情况修复问题。


BugReport: https://connect.microsoft.com/VisualStudio/feedback/details/2116788/flag-optimize-is-passed-to-the-debugger-even-while-the-build-settings-optimize-code-is-not-enabled-on-mvc-c-web-projects-when-using-just-my-code - SeriousM

1
我在Visual Studio 2015 Express中打开了我的Visual Studio 2012 Pro项目,遇到了相同的问题。
我检查了我的解决方案属性 → 配置属性,发现一个项目被设置为发布和x86。
我将其改回调试任何CPU,然后提示就消失了。

1

如果您只需要继续进行而没有进一步的延迟,请从弹出窗口中选择最后一个选项,所有内容将与之前相同。

Enter image description here


JPEG 图像不是截图的最佳选择。你能不能用(清晰的)PNG 版本(甚至是 GIF)替换它? - Peter Mortensen

0

在查看Patrick在评论中提供的链接后,有人注意到一个解决方法是停止IIS Express中的站点。在Visual Studio调试器中停止后,我也通过这种方式避免了同样的问题。

然而,我进一步研究后发现,这可能也与调试器的“编辑并继续”设置有关。当我在Visual Studio的菜单工具选项...中禁用它时,我就不再遇到这个问题了。但这将阻止您使用编辑并继续功能,所以我不确定这是否对您有价值。

菜单 工具选项调试器编辑和继续(滚动到“常规”列表底部)→ 取消选中 编辑和继续 复选框。

我在安装更新1后也遇到了这个问题,但可能是因为我一开始就关闭了这个设置...不过我不确定。


0

这是一个奇怪的警告。

重新构建解决方案不一定会清除所有DLL文件(特别是从依赖项目复制的文件)。

但是,重新构建依赖项目可以消除此警告。

我在使用Visual Studio 2015 Update 3时遇到了这个问题。


0

我的解决方案与其他所有人都有些不同,有点独特。

我正在处理一个包含托管代码和ASP Classic混合引用同一程序集的网站。Visual Studio 抱怨我的托管 DLL 文件是一个发布版本。

问题出在我的程序集中有一个未捕获的异常,但是它是通过互操作由 ASP Classic 页面抛出的。Visual Studio 无法处理调试这个异常并显示错误消息。如果从托管代码中抛出相同的异常,将会像预期的那样弹出调试器。

在我的托管程序集构造函数中纠正问题后,一切都得到了解决。

现在回过头来看整个大局,一切都变得清晰明了了。但当时,错误消息让我走上了一条非常深的路,直到我有了“啊哈!”的时刻,我尝试了这里的所有答案。


0

解决步骤:

  • 前往有问题项目的属性页面下的构建设置。

  • 滚动到“高级...”按钮。

  • 确保“调试信息:”没有设置为“无”

    我建议您使用完整选项。


请记得对所有您想要调试的程序集执行此操作。 - Igor Quirino

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