关于c#:升级到Visual Studio 2015,现在无法在调试时遇到断点

Upgrade to Visual Sudio 2015 and now can't hit break points in debugging

我在Visual Studio 2013中构建了一个多项目解决方案,它运行良好,但现在我已升级到Visual Studio 2015,我无法再在调试模式下为任何项目找到断点执行在"项目属性"页中选择作为启动项目的主项目。我以前可以单击其他项目,然后选择"调试"->"启动新实例"。我得到了错误The breakpoint will not currently be hit. No symbols have been loaded for this document.,我尝试了很多在谷歌上发现的东西,包括:

  • 清洁/重建
  • 从项目中删除obj和bin文件夹
  • VS修复
  • 重启
  • 已卸载/重新安装
  • 已为属性->生成启用确认的define debug约束
  • 已确认的优化代码未选中"属性"->"生成"
  • 确认的属性->构建=>所有项目的平台目标设置为任何CPU
  • 尝试使用"以管理员身份运行"运行vs
  • 已删除/appdata/local/temp/temporary asp.net文件中的所有文件/
  • 确保已选择"Debug->Attack to Process->Select had"自动确定要调试的代码类型。
  • 确保"属性"->Web->Debuggers"已选中ASP.NET(我的属性已选中ASP.NET并启用"编辑并继续"复选框,未选中"natvie代码SQL Server"和"silverlight")。
  • 属性->应用程序中确认的目标框架设置为与web.config/app.config文件中相同的版本(4.6)。

那么我在这里错过了什么?为什么我不能再调试其他项目?


我在创建新的构建配置时遇到了类似的问题。在浏览了VS2015中的设置之后,我注意到我的构建输出中没有*.pdb文件。显然,如果存在*.pdb文件,调试将无法工作。

对我来说,修复方法是进入每个项目的属性->"构建"页面->单击页面底部的"高级"按钮->在对话框的"输出"部分,我将"调试信息"设置为"完整"。

基本上,我创建了一个新的解决方案和项目,并将所有的构建属性复制到这个解决方案中,调试器不再停止在断点处。除了上面的设置,我还更改了以下设置以匹配默认的调试设置:

  • 我将"内部编译器错误报告"的高级页面设置为"提示"
  • 在"构建"主页面中,我签入了"常规"部分"定义调试常量"和"定义跟踪常量"


我解决了这个问题,当选中选项->调试->常规->抑制模块加载时的JIT优化。在此之前,我还未选中"工具"->"选项""项目和解决方案""生成并运行""仅生成启动项目和运行依赖项"。不知道在取消选中抑制JIT后是否有任何原因导致它工作。


我的情况是我已经在项目属性中启用了"优化代码"。


如果只在启动项目中命中断点:

  • 工具>选项>项目和解决方案>构建和运行
  • 取消选中"仅在运行时生成启动项目和依赖项"

Only build startup projects and dependencies on Run

这里是德语:enter image description here


以admin身份运行vs命令提示符和运行命令一样:devenv /setup为我修复了这个问题。


我从来没搞清楚发生了什么,但最终我建立了一个全新的项目,只是将文件导入其中,现在一切都正常了。


从旧系统迁移到新系统后,调试器没有命中我的ASP应用程序的断点。我忘记在IIS中配置调试。

要配置用于调试的IIS,请执行以下操作:

  • 网站>我的网站
  • IIS>ASP>调试属性
    • 将启用客户端调试设置为true
    • 将启用服务器端调试设置为true

Debugging Properties in IIS


在我的情况下,我只是改变了我的运行模式的设置。

之前,我使用了"释放"运行模式:enter image description here

现在,我使用的是"调试"运行模式:enter image description here


这让我精神错乱,直到我意识到在另一个解决方案中,我设置为发布配置,将其改回调试工作。

这可能不是你的具体答案,但我想我会分享它"以防万一"其他人被一些明显的东西驱使分心!


我刚刚为我们的一个前端开发人员解决了这个问题。它可能适用于您,也可能不适用于您。我们使用IIsExpress进行本地调试,并且不知何故,在调试时,他的进程已经脱离了正确的进程。

要解决此问题,我根据IIS Express检查了它附加到的进程ID(右键单击任务栏上的IIS图标,选择显示所有应用程序,检查列出的应用程序的PID)。然后我将它附加到正确的进程(在VS中运行解决方案时,单击工具栏上的"调试",选择"附加到进程",使用上面从IIS Express获得的PID查找正确的进程)。希望这能帮助别人。


我从来没能让它与上述方法一起工作,最后又回到了VS2013的解决方案,它工作得很好。非常令人沮丧的是,当VS2015从稳定的、健壮的VS2003转变为VS2005时,它的感觉与VS2005非常相似。

我希望2017年能够解决这些矛盾。


您可以保持原样,只需注意以下几点:

  • 高级编译器设置->生成调试信息->必须是"pdb only"或"full"
  • 高级编译器设置->启用优化->需要取消选中

重新启动Visual Studio对我很有用。


我也面临着这个问题,但在Visual Studio 2015更新1之后,它现在被修复了。

https://www.VisualStudio.com/en-us/news/vs2015-update1-vs.aspx


在我的例子中,我无法调试,因为在分析文件历史记录而不是解决方案中的实际文件时,在源代码管理临时文件中设置了断点。


我的项目是一个MVC Web应用程序,当我使用调试器运行项目时,一个新的选项卡正在浏览器中打开,它将我重定向到登录页面。但在另一个选项卡中,我已经登录了用户,该用户可以做任何事情,但它没有触及断点,即使我很难刷新页面。每次我关闭新打开的标签时,它都会重定向到登录页面。有一次,我关闭了登录用户的旧标签,并在新打开的标签中再次登录到应用程序。然后它开始达到临界点。


我希望这对任何人都有帮助。如果您正在本地计算机上的IIS下运行代码,则需要将解决方案附加到w3wp.exe进程。因此,选择您的项目,在菜单上转到"调试"->"附加到进程",并在列表中看到w3wp.exe。

现在,如果您没有看到w3wp.exe,您可以选择"显示所有进程"复选框,或者转到您的IIS管理器浏览网站,以便实际运行w3wp.exe实例。


卸载postsharp nuget解决了我的问题,本文将在https://doc.postsharp.net/uninstalling中进行解释。