突然之间,我遇到了一个无法通过Visual Studio中的调试进入任何代码的问题。步骤结束工作正常,但它拒绝进入任何我的代码( F11 )。这在以前工作,现在突然之间没有。
我在下面尝试了一些事情,但我仍然没有成功:
删除解决方案中每个项目中的所有bin文件,清理解决方案,重新构建解决方案。
单独在解决方案中构建项目
重启机器
ASP.NET C#应用程序在本地使用WCF服务。它处于调试模式。我在使用该服务的页面上设置了断点。断点命中,但不会进入服务代码。
ASP.NET站点和服务代码都在同一个解决方案中。这突然之间不起作用,之前确实有效。
如何解决此问题?
向服务项目添加断点我收到警告:
目前不会遇到断点。没有为此文档加载任何符号。
我删除了所有项目的所有bin文件夹,并逐个重新构建它们。它们都成功了,但我仍然得到符号不会加载我放入解决方案中除断点工作的ASP.NET项目之外的任何项目中的任何断点。我之前能够调试步骤进入所有项目,这是一个突然的事情。
输出窗口中的信息..
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\SMDiagnostics\v4.0_4.0.0.0__b77a5c561934e089\SMDiagnostics.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.DurableInstancing\v4.0_4.0.0.0__31bf3856ad364e35\System.Runtime.DurableInstancing.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Xaml.Hosting\v4.0_4.0.0.0__31bf3856ad364e35\System.Xaml.Hosting.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\2d49cf50\14eee2cf\App_Web_jmow15fw.dll', Symbols loaded.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.Serialization\v4.0_4.0.0.0__b77a5c561934e089\System.Runtime.Serialization.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.WorkflowServices\v4.0_4.0.0.0__31bf3856ad364e35\System.WorkflowServices.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel.Web\v4.0_4.0.0.0__31bf3856ad364e35\System.ServiceModel.Web.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel.Discovery\v4.0_4.0.0.0__31bf3856ad364e35\System.ServiceModel.Discovery.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel.Activities\v4.0_4.0.0.0__31bf3856ad364e35\System.ServiceModel.Activities.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel.Routing\v4.0_4.0.0.0__31bf3856ad364e35\System.ServiceModel.Routing.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel.Channels\v4.0_4.0.0.0__31bf3856ad364e35\System.ServiceModel.Channels.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.IdentityModel\v4.0_4.0.0.0__b77a5c561934e089\System.IdentityModel.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
答案 0 :(得分:44)
关闭Visual Studio:
打开Visual Studio并重建所有内容。这总是有效的。请参阅C# VS2010 Entering break mode failed。
供参考:
Private Sub ClearVS9
ClearFolder(oShell.ExpandEnvironmentStrings("%APPDATA%") & "\Microsoft\VisualStudio\9.0\ProjectAssemblies")
ClearFolder(oShell.ExpandEnvironmentStrings("%APPDATA%") & "\Microsoft\VisualStudio\9.0\Recent")
ClearFolder(oShell.ExpandEnvironmentStrings("%USERPROFILE%") & "\Local Settings\Application Data\ApplicationHistory")
ClearFolder(oShell.ExpandEnvironmentStrings("%USERPROFILE%") & "\Local Settings\Application Data\Microsoft\VisualStudio\9.0\ProjectAssemblies")
ClearFolder(oShell.ExpandEnvironmentStrings("%WINDIR%") & "\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files")
End Sub
Private Sub ClearVS10
ClearFolder(oShell.ExpandEnvironmentStrings("%APPDATA%") & "\Local\Microsoft\WebsiteCache")
ClearFolder(oShell.ExpandEnvironmentStrings("%APPDATA%") & "\Local\Microsoft\VisualStudio\10.0\ProjectAssemblies")
End Sub
请参阅JMarsch提到的链接The evil suo file - fighting and winning with Visual Studio。
答案 1 :(得分:20)
就我而言,我正在踩到一个让IEnumerable
返回的方法。在这种情况下,F11可以跳过该方法,直到IEnumerable
被迭代,因为它的执行被推迟到那时。
答案 2 :(得分:5)
我使用VS 2017,但这也适用于2015年。我的问题是,当我设置断点时,代码将在该点正确停止,但是当我按下F10或F11时,代码将完成运行而不是转到下一行。我还注意到,当代码在断点处停止时,我无法使用光标悬停在我的变量上以查看它们的值。以下是我纠正问题的方法
答案 3 :(得分:4)
当无法加载DLL的符号(。PDB文件)时,Visual Studio不会进入代码。
下面是文章的链接和一些屏幕截图,这些屏幕截图说明了如何发现Visual Studio尝试在何处加载PDB文件。找到目录后,只需将.pdb文件复制到其中,Visual Studio就会进入该目录。
https://devblogs.microsoft.com/devops/understanding-symbol-files-and-visual-studios-symbol-settings/
模块窗口->调试> Windows>模块
答案 4 :(得分:2)
试试这个:
%temp%
位置删除临时ASP.NET文件。它对我有用。
答案 5 :(得分:1)
WCF项目也是一个Web应用程序吗?是否启用了ASP.NET调试? (右键单击WCF项目,转到属性 | Web )
当参考被弄乱时,我也发生了这种情况 - 确保Web应用程序的引用与解决方案中的项目副本相同。
检查配置管理器(在Solution Explorer中,右键单击解决方案 | Configuration Manager ),并确保两个项目都在构建
有时.suo
文件被破坏,您可以获得各种奇怪的行为。您可以尝试删除它(如果您是偏执狂,请制作备份副本,请参阅 The evil suo file - fighting and winning with Visual Studio )。
答案 6 :(得分:1)
我有同样的问题。
我想进入一个返回IEnumerator
的方法,而我只是通过简单的调用(只是方法的名称)来调用它。
private void Start()
{
GetTagsFromCloud();
}
但是由于它是在后台运行的,因此最好通过以下方式来调用它。
private void Start()
{
StartCoroutine(GetTagsFromCloud());
}
答案 7 :(得分:1)
您的 F11 键可能会反弹到其他位置。如果单击Visual Studio中的步入按钮,它可能会起作用。
答案 8 :(得分:0)
如果您自定义输出路径,请确保所有输出路径都指向同一输出目录
答案 9 :(得分:0)
在我的情况下,我使用Visual Studio运行Web应用程序。我尝试的程序集是从我的常规文件系统中的某个位置引用的,但在运行时它是从GAC加载的。我一直认为.NET试图先从本地垃圾箱加载然后加载GAC,但我猜不是。无论如何,它无法找到GAC中版本的.pdb调试符号,这就是为什么我无法介入的原因。一旦我在GAC中更新了程序集并提供了.pdb文件,它工作。
答案 10 :(得分:0)
在我的情况下,我试图进入一个Web服务方法,它无法正常工作。 在我使用Unity解析了服务实例后开始工作。
答案 11 :(得分:0)
在我的VS2008案例中,检查Project Properties | Debug下的“启用非托管代码调试”选项。我不知道为什么这个有效,因为项目中的所有代码都在vb.net中。
在更高版本中,此选项已重命名为“启用本机代码调试”。
答案 12 :(得分:0)
关闭Visual Studio,然后重新启动对我有用。
答案 13 :(得分:0)
如果您仍然可以使用工具栏,但F11已死,则Visual Studio可能没有问题,但是按键的优先级较高,因此永远不会达到VS。
您可以通过将密钥与另一个程序(例如另一个应用程序或游戏)一起使用来进行验证。如果那里也不行,那就是这种情况。
最好先尝试一下VS,因为它更快,更安全。您可能最终会发现整个问题仍然存在,因此重新安装了整个Studio。
我遇到了同样的问题,在我的情况下,优先级较高的消费者是nvidia geforce体验,我将F11设置为FPS指示器切换。当我关闭该程序在游戏中的覆盖时(始终处于活动状态并准备好击键来显示fps,记录,拍摄快照,广播等),F11在PC重新启动后就像一个超级按钮。
我假设还有其他相同或相似角色的永远在线应用程序,可能会消耗按键。
答案 14 :(得分:0)
根据我所阅读和理解的内容,您应该查找以下文件:
项目在bin目录中的程序集Name.pdb。如果你没有看到它,它就没有建成。请参阅我关于将调试信息设置为完整以及选项/调试/符号的注释。
将项目的构建输出设置为详细或详细(工具/选项/项目&解决方案/构建和运行/ MSBuild项目构建输出详细程度)。
使用此文件(即AssemblyName.pdb)查找某些任务,删除,复制等,看看是否可以找出是否(尝试)删除pdb文件,它是从(dll / exe)引用的)它放置它,复制它等等。
如果没有构建,您只会看到删除任务。如果是,您将看到复制和参考任务。这些复制和引用路径将告诉您需要指向该程序集的模块控制台(AssemblyName.exe)以获取其符号文件(即复制该pdb文件的位置)。
答案 15 :(得分:0)
我也遇到了这个问题,原来我希望采用的方法是Moq'd(我正在调试测试)。此起订量刚刚返回。
答案 16 :(得分:0)
在VS 2005上,检查 c / c ++ (项目属性)下的 Optimization 是否设置为 Maximize Speed(/ 02)。将设置更改为 Disabled(/ Od)。