首页 文章

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

提问于
浏览
8

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

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

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

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

7 回答

  • 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文件 .

  • 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

  • 0

    enter image description here

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

  • 0

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

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

    一旦进入视图,然后点击F5(继续)将转到视图中的断点 .

  • 0

    对于我来说,在javascript代码中设置断点没有任何作用 . 我将javascript代码移到文件Scripts \ myscript.js中并将脚本块替换为

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

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

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

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

    谢谢

相关问题