Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc Visual Studio不允许在MVC视图中使用断点_Asp.net Mvc_Visual Studio_Debugging_Visual Studio 2012_Breakpoints - Fatal编程技术网

Asp.net mvc Visual Studio不允许在MVC视图中使用断点

Asp.net mvc Visual Studio不允许在MVC视图中使用断点,asp.net-mvc,visual-studio,debugging,visual-studio-2012,breakpoints,Asp.net Mvc,Visual Studio,Debugging,Visual Studio 2012,Breakpoints,有时VisualStudio不允许我在MVC视图中设置断点。这种情况在我身上已经发生了很多次,但并不是每一次都会发生,我也不知道为什么 单击左侧栏放置断点时,会放置一个白色圆圈,而不是正常的红色圆圈。当您将鼠标悬停在它上面时,它会显示“断点当前不会被命中。源代码与原始版本不同。”它会继续描述如何允许断点被命中,但这会产生奇怪的结果,我不希望这样 如果错误是正确的,那么我想运行原始源代码。我不知道在VS的幕后发生了什么;我试着重建和所有这些,但没有帮助。我在VS 2012中以调试模式运行 这可能是

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

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

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


这可能是由许多因素造成的,但我最近帮助过人们的一些项目需要检查:

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

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

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

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

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

  • 在命令提示符下使用
    iisreset
    重新启动IIS

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


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

在调用视图之前的控制器代码中设置断点。然后,当该断点被命中时,单步执行(使用F10)多次。它将通过_ViewStart.cshtml和其他一些东西。但很快它就会进入视野


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

确保将解决方案配置设置为“非发布时调试”


谢谢你的回答,在javascript代码中设置断点对我来说没有任何效果。 我将javascript代码移到文件Scripts\myscript.js中,并将脚本块替换为

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

所以今天早上我遇到了这个问题,我的修复程序与razor语法有关

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

@If (my condition)
{
  myVar1 = "blah blah blah"
  @myVar2 = 1 <== This line here was causing my razor to crap out on render
}
@If(我的状况)
{
myVar1=“诸如此类”

@myVar2=1要添加到@kirk broadhurst answer中(如果可能,请修改),请仔细检查您的web.config,特别是system.web下的
编译
标志。即使您是为调试而构建,如果
调试
属性设置为false,您也会遇到问题

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


确保“调试”设置好了,瞧…调试又开始工作了:-)

您是否在运行发行版,并且没有将其配置为生成pdb文件?您完全可以,这里还有其他因素阻止了它。但是有很多变量可能会导致这种情况。我正在运行调试。我的que中是否应该包含其他相关信息stion?没有太多可以添加的。正如我所说,可能有太多的变量在起作用。可能是从另一个项目输出目录复制dll,可能是它没有生成pdb,可能是它指向的文件超出了您的预期,等等。当这个问题是针对VS2012时,我现在在VS2015上查看我的通信下面的ent re:web.config修改要检查的内容列表