在Visual Studio中进行调试时,有时我会添加一个断点,但它是空心的,VS说"断点当前不会被命中.源代码与原始版本不同." 显然,这使我无法进行调试.
消息到底意味着什么?什么原始版本?如果我刚刚打开解决方案并且没有对代码进行任何更改,那么如何才能有"原始版本"?
我的智慧结束了.Visual Studio 通常很难调试,或者只是简单地加载("启动而不调试")我的ASP.NET MVC站点.并非总是如此:首先,项目将加载得很好而且速度很快,但是一旦加载速度变慢,它们总是会在此之后加载缓慢.我可以等待1-2分钟或更长时间.
我的设置:
我目前正在使用Visual Studio 2012 Express,但我在Visual Studio 2010 Express中也遇到了同样的问题.我的解决方案存储在网络驱动器上; 具体来说,如果重要的话,它的My Documents会重定向到网络驱动器.(它不应该.有时我的网站在此设置下加载速度非常快.)
我通常在Internet Explorer 9中加载,但在Firefox中也会出现同样的问题.
这可能发生在我工作的任何ASP.NET MVC项目中,它似乎围绕着DisplayTemplates,我的所有ASP.NET MVC项目都是这样做的.而这一切都是C#和Razor,如果重要的话.
系统将加载我的符号数百次.基本上,以下,但至少有300个这样的行,每个行都有相同的CSHTML的不同的DLL文件:
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_contact.cshtml.22013bb9.xighmhow.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_contact.cshtml.22013bb9.cv5hktkf.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_statuscode.cshtml.22013bb9.1o77hs8i.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_statuscode.cshtml.22013bb9.jja-77mw.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_location.cshtml.22013bb9.l_e9ev_s.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_location.cshtml.22013bb9.b4n59gom.dll', Symbols …Run Code Online (Sandbox Code Playgroud) asp.net-mvc cassini visual-studio iis-express visual-studio-2012
Visual Studio需要花费很多额外的时间来加载外部dll的符号,我宁愿不加载它们.我在VS2008中摆弄了我的符号设置,这些设置似乎正在影响VS2010
如何阻止它加载第三方符号?
我试过了:
接下来的事情是VS重新安装,失败的操作系统重新安装,但如果每次按下调试它会节省我14秒,那将是值得的.
我在ASP.NET MVC项目中加载符号时遇到问题.我第一次加载visual studio并调试我的项目时,符号大约加载2秒钟.然后我结束调试会话,进行代码修改,再次调试,符号加载时间大约是一分钟.基于我所做的研究,以下是我的机器/ VS上的一些适用设置:
在选项/调试/符号/符号文件位置中,未选中"Microsoft符号服务器",并且没有其他位置.
此目录中的选项/调试/符号/缓存符号为"G:\ Symbol Cache".我点击了"加载所有符号",我检查了该目录,看到了很多符号.
只是我的代码已启用.
我的机器上未定义_NT_SYMBOL_PATH和_NT_ALT_SYMBOL_PATH环境变量.
选项/调试/符号/自动加载符号设置为"仅指定模块",未指定模块.
我已经尝试了调试和发布版本,结果相同.Ctrl + F5几乎立即加载网站.
我正在使用Visual Studio 2013中的ASP.NET解决方案,该解决方案无法达到断点.Visual Studio将成功点击其他解决方案的断点,此解决方案中的断点以前有效.但此时他们无法工作.
我正在使用Visual Studio 2013 Ultimate,Update 4.这是安装在Windows 8.1,64位上.
这是一个包含3个项目的MVC解决方案:BusinessEntities,DataAccessLayer(DAL)和Web项目.所有这些项目中的断点都无法正常工作.我甚至在家庭控制器的Index ActionResult内部尝试了断点,但仍未能在断点处停止.
在Visual Studio功能区中,解决方案配置设置为Debug.此外,Configuration Manager显示我的所有3个项目都将配置设置为Debug.重新启动IIS,重新启动Visual Studio,并重新启动并没有解决此问题.选择Build> Clean Solution,Build> Rebuild,然后Debug> Start Debugging也没有修复它.
在web.config中,debug在此节点中设置为true:
<system.web>
<compilation debug="true" targetFramework="4.0" />
Run Code Online (Sandbox Code Playgroud)
我的项目的bin目录中有.pdb文件.我确认在清理解决方案时它们会被删除,并在重建时重新创建.
我还需要检查什么?我真的需要在此解决方案中使用断点.谢谢.
========
2014年12月30日的更新 - 根据@ paul.abbott.wa.us的评论,以下是我尝试过的几件事.我删除了几条评论,为了清楚起见,只是附在此处.
========
我正在通过VS启动应用程序,并在IIS下运行它.IIS的版本是8.5.在公开进程名称时(通过System.Diagnostics.Process.GetCurrentProcess().ProcessName),它是w3wp.
在IIS中,Web应用程序具有类似"local.mysite"的站点名称,并且在hosts文件中有匹配的条目.该站点使用DefaultAppPool,它使用.NET CLR版本4.0和集成管理管道模式.我的解决方案中的3个应用程序面向.NET Framework 4.
如果我将其切换回IIS Express,调试器将开始工作.IIS的版本更改为8.0,进程名称当然是iisexpress.从技术上讲,我不必在工作站上的IIS下运行它,但我更愿意这样做.我在IIS中错误配置或忽略了什么可能导致调试器失败?
在属性页面的Web选项卡上查看项目服务器设置,我注意到下拉列表设置为"IIS Express".切换到"本地IIS"后,系统提示我以管理员身份运行VS. 在这之后,我能够将服务器更改为本地IIS,并点击调试器.我检查了更改,关闭VS,启动VS不作为Admin运行,并加载解决方案.无法使用以下消息加载Web项目:Web应用程序项目[MySiteName]配置为使用IIS.无法访问IIS元数据库.您没有足够的权限访问计算机上的IIS网站.
最终,该站点的某些部分将采用Active Directory身份验证.那么,我是否需要在IIS Express下运行站点,或者如果我希望在IIS下运行站点,则始终以管理员身份运行VS?谢谢.
我找到了一个解决方案来解决"Web应用程序项目[MyApp]配置为使用IIS"的错误消息.无法访问IIS Metabase.您没有足够的权限访问计算机上的IIS网站."请按照此文章中的步骤操作. 错误 - 无法访问IIS元数据库
授予我的帐户访问intetsrv\config文件夹后,Web项目在Visual Studio中正确加载,而无需以管理员身份运行VS.
但现在当我启动该站点时,会出现另一个警告:"无法在Web服务器上启动调试.IIS未列出与启动的URL匹配的网站.单击"帮助"以获取更多信息."最初我只是单击"创建虚拟目录"并再次启动,但同样的警报再次出现.
所以我从警报中选择了"帮助"按钮.这导致了这个MSDN页面,该页面提出了大约2个要检查的内容,其中大约一半的链接到其他文章.我现在感觉有点像爱丽丝梦游仙境,沿着兔子洞向下走.
2015年2月3日更新:我在本地IIS实例上运行此方法时的解决方法是将Visual Studio作为管理员运行.最终,我们更改了应用程序以使用IIS Express,然后放弃了应用程序,以寻找同事建立的另一个解决方案.这个决定与这个问题无关.感谢大家的反馈和想法.
2016年3月7日更新:在这个时候,我无法复制这个问题,因为我们不再有它在哪里,当我在它去年的工作状态的解决方案.如果主持人可以解决这个问题,我将不胜感激.关闭此选项的选项与我当前的场景不一致,但如果他们遇到此场景,其他人可能会发现以下建议很有用.感谢所有提出建议的人.