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个回答

111
使用配置管理器检查调试配置的实际设置,它位于菜单 生成配置管理器... - 以防它们被设置为使用 发布

Configuration Manager

同时,请确保项目正确定义了DEBUG,并且未勾选“优化代码”:

Properties


2
我刚刚在那里检查了一下,它们都已经设置为调试模式了。我已经更新了帖子并附上了截图。还有其他的想法吗? - Sen
1
我编辑了我的问题。优化代码已经被检查过了,取消选中它似乎有所帮助。但是请参考问题的详细信息。 - Sen
1
@Sen 看起来有人错误地配置了您的调试构建设置。带有优化代码的调试构建毫无意义。至于符号问题:也许有人在调试构建中禁用了这些符号?在构建设置中点击“高级”按钮,并检查调试构建中的“调试信息”是否设置为“完整”。 - cremor
6
取消勾选“优化代码”就解决了问题。不确定它是如何被勾选的,但一旦取消勾选,一切似乎又开始正常运作了。所有其他的调试设置都是正确的,只有这个设置有些问题。我也不再收到“符号未加载”的消息了。 - Sen

98

我在几个项目中也遇到过这种情况。根据stuartd的建议,我检查了我的构建设置。然而,在我的构建设置中没有启用“优化代码”。所以我启用了它并保存了项目。然后我取消了勾选它并再次保存。问题解决了。

有一种错误会导致调试器传递--optimize+标志。启用它然后禁用它是一个易于使用的解决方法,直到该错误被修复。


1
我以前在IntelliJ IDE中见过这个,但直到现在才在Visual Studio中看到。奇怪的是,这对我也起作用了。 - ZaneDarken
1
2017年更新:在Visual Studio 2015 Update 3中仍然存在此问题。被接受的答案没有解决这个问题,但是这个答案解决了它。 - Lews Therin
1
这个答案也解决了我的调试环境问题。谢谢! - bob.mazzo
1
哇!我也遇到了这个问题,这个方法对我也有效。使用的是VS 2015 U3版本。真是不可思议... - AbeyMarquez
1
VS2017 Community,仍然存在这个问题。感谢您提供的解决方案。 - William Borgo

20

在应用更新1后,我遇到了这个问题。现有的项目开始显示这个问题,并且我可以在全新的项目中复制它。所有的配置都设置为DEBUG,而且没有选中Optimize。

关键是,第一次运行项目(或者在Clean之后)可以正常运行,没有任何消息。停止然后重新运行该项目(注意 - 项目未被重建)将显示对话框。

唯一的解决方案是关闭Just My Code选项 - 这似乎是一种hack,因为在更新1之前它一直是开启的而没有任何问题。


6
就目前而言,微软支持已经复现了这个问题并正在调查。一旦我收到消息,我会回复/答复。 - John T
2
这里有相同的情况和症状,出现在VS2015更新1之后。在每个调试会话之前运行清理可以用作解决方法,因为第一次之后它确实可以正常工作。仅进行重建是不够的,需要进行清理。 - AronVanAmmers
2
微软方面表示,这是一个已知问题(最初向调试器团队报告,但确定是构建问题,现在由项目系统团队负责)。这个问题上还有其他的漏洞,并且被评为优先级1,因此应该会在下一个更新中得到解决。尽管如预期的那样,不能保证什么时候发布更新(或者更新中具体包含了哪些内容)。所以,这个问题是已知并正在解决中。目前,至少可以通过关闭“启用只读我的代码”选项来进行解决。 - John T
有没有相关问题的链接,以便我们跟踪进展? - SkyrawrCode
1
错误报告: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
@SeriousM,这个方法对我有用。现在“仅限我的代码”已经开启,“禁止JIT优化”也关闭了。不再出现该消息。 - Nick Molyneux

13
如果以上提到的解决方法都没有帮助,请检查您项目的AssemblyInfo.cs文件是否明确应用了DebuggableAttribute。看起来它将覆盖编译器的调试/发布选项。
在我的情况下,文件中有这行代码(传统项目,不知道它是怎么出现的)。删除它解决了问题。
[assembly: System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]

2
谢谢。我正在处理一个项目,我的客户丢失了他们的原始源代码,所以我不得不使用反编译器来生成它。我唯一的猜测是反编译器加入了这行代码。 - jebar8
是的,在我的情况下也可能是这个原因。谢谢分享。 - Dmitry Rotay

10

链接已经(有效地)失效:“Microsoft Connect已被停用” - Peter Mortensen

9

我也遇到了这个问题。解决方法是简单地清理 (生成 > 清理解决方案) 并重新构建 (生成 > 重新生成解决方案) 我的项目。


你能详细说明一下吗?例如如何操作(调用菜单命令等)? - Peter Mortensen

6

之前给出的答案对我都没有用。重启IIS解决了问题。


3

stuartd's answer的基础上,补充一点:

请确保检查任何依赖项目是否具有相同的构建设置。如果您的主项目具有正确的设置,但是您的依赖项目没有,则会收到相同的消息提示。这在事后显然很有意义,但并不是首先想到的事情。


3
在我的情况下,问题是在我的ASP.NET项目属性Web选项卡中的IIS“项目URL”设置为错误的URL。
它指向我正在使用不同副本的http://localhost。我打开的解决方案的地址实际上配置在我的本地IIS上http://localhost:90
更改为正确的地址即可解决问题。

Enter image description here


2
对我来说,问题出在私有 NuGet 服务器上的 NuGet 引用。我不知道它是如何编译的,但将引用更改为项目引用后,问题得到解决。

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