8

有时 Visual Studio 不允许我在 MVC 视图中设置断点。这在我身上发生了很多次,但并不是每一次都发生这种情况,我不知道为什么。

当您单击左侧栏放置断点时,它会放置一个白色圆圈而不是正常的红色圆圈。将鼠标悬停在其上时的消息是“当前不会命中断点。源代码与原始版本不同。” 它继续描述如何允许断点被击中,但这会产生奇怪的结果,我不希望这样。

如果错误是正确的,那么我想运行原始源代码。我不知道 VS 的幕后发生了什么;我尝试重建和所有这些,但它没有帮助。我在 VS 2012 中以调试模式运行。

尝试在 vs 2012 MVC razor 视图中放置断点的屏幕截图

4

7 回答 7

9

这可能是由很多原因引起的,但有一些项目需要检查我最近帮助过的人:

  • 第一步:必须在 DLL 旁边有一个 PDB 文件才能启用调试。(请参阅:什么是 PDB 文件?)确保您在执行目录中有 PDB。

  • 清理以从您的 bin 文件夹中删除所有旧的 DLL。

  • 确保您的应用程序正在运行当前代码的构建(与 Visual Studio 中的版本相同)。不要以为这只是因为您单击了“构建”或“部署”。如果没有检测到变化,那么事情通常不会发生。检查程序集的构建时间,或更改某些内容并重新构建以查看文件大小的变化。

  • 如果您正在运行与 Web 相关的内容,请确保浏览器没有缓存代码,或者 IIS 没有长时间运行进程。

  • 杀死任何正在运行的 Visual Studio Development Server 实例(您可以从任务管理器执行此操作,或者更简单地从系统托盘执行此操作 - 它们看起来像一个 IE 徽标,当您将鼠标悬停在它们上方时,它们会告诉您它们在哪个端口上运行)。

  • iisreset使用从命令提示符重新启动 IIS 。

  • 检查 Visual Studio 中的调试设置 ( Tools > Options > Debugging > Symbols) 您希望自动加载符号,如果您要链接其他程序集,则需要在此处引用它们的 PDB 文件。

于 2013-08-28T21:15:23.463 回答
2

所以今天早上我遇到了这个问题,我的修复与剃刀语法有关。

我在 if 语句中设置了一个变量

@If (my condition)
{
  myVar1 = "blah blah blah"
  @myVar2 = 1 <== This line here was causing my razor to crap out on render
}

所以所有其他的东西都是好事,但是不正确的 razor 语法也会导致断点问题。在这种情况下,它是代码块内 myVar2 上的 @ 符号......仅供参考

于 2017-09-15T14:31:32.957 回答
1

我发现解决这个问题的最简单的解决方案是:

在调用 View 之前的控制器代码中设置断点。然后,当该断点被命中时,单步执行(使用 F10)几次。它将通过 _ViewStart.cshtml 和另外一两件事。但很快它就会出现在视野中。

进入视图后,按 F5(继续)将带您到视图中的断点。

于 2015-04-27T15:55:54.837 回答
0

从答案中,我无法在 javascript 代码中设置断点。我将 javascript 代码移动到文件 Scripts\myscript.js 并将脚本块替换为

<script src="@Url.Content("~/Scripts/myscript.js")"></script>
于 2016-08-23T15:32:44.477 回答
0

要添加到@kirk-broadhurst 答案,(如果可能,请修改),请仔细检查您的 web.config,特别是compilationsystem.web 下的标志。即使您正在为调试而构建,如果该debug属性设置为 false,您将在调试 Razor 时遇到问题。

<system.web>
    <compilation debug="true" targetFramework="4.6" />
</system.web>
于 2017-11-20T21:22:10.113 回答
0

在此处输入图像描述

确保设置了“调试”并且瞧……调试再次工作:-)

于 2018-04-17T14:34:31.140 回答
-1

确保您的解决方案配置设置为 Debug not on release。

谢谢

于 2016-04-15T17:57:54.460 回答