Visual Studio不允许MVC视图中的断点

时间:2013-08-28 18:36:04

标签: asp.net-mvc visual-studio debugging visual-studio-2012 breakpoints

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

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

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

screenshot of trying to place a breakpoint in vs 2012 MVC razor view

7 个答案:

答案 0 :(得分:9)

这可能是由许多事情引起的,但有几项要检查我最近帮助过的人:

  • 第一步:DLL旁边必须有一个PDB文件才能启用调试。 (参见:What is a PDB file?)确保在执行目录中有PDB。

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

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

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

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

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

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

    < / LI>

答案 1 :(得分:1)

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

在调用View之前的控制器代码中设置断点。然后,当该断点被击中时,逐步(使用F10)几次。它将通过_ViewStart.cshtml,也许还有另外一两件事。但很快它就会出现在观点中。

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

答案 2 :(得分:1)

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

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

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

所以其他所有东西都是好东西,但是不正确的剃刀语法也会导致断点问题。在这种情况下,它是代码块内myVar2上的@符号......只是一个FYI

答案 3 :(得分:1)

here

确保设置了“debug”并且Voila ... debug再次运行: - )

答案 4 :(得分:0)

Fom the answer nothing worked for me to set a breakpoint in the javascript code. I moved the javascript code inside to file Scripts\myscript.js and replaced the script block to

<script src="@Url.Content("~/Scripts/myscript.js")"></script>

答案 5 :(得分:0)

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

<system.web>
    <compilation debug="true" targetFramework="4.6" />
</system.web>

答案 6 :(得分:-1)

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

由于