我有一个 ASP.NET MVC 应用程序项目,以及 VisualStudio 解决方案中的各种其他项目。不同的项目使用 NPoco 库的不同版本如下:
我使用的是 Visual Studio 2015 Update 314.0.25422.01。
由于某种原因,当我使用 VisualStudio 中的常规 Start Debug 命令在调试器中启动此应用程序时,它会启动,但它也会产生以下警告:
如果我按 继续调试,一切似乎仍然像往常一样工作,包括断点。
这个问题最近才开始出现。
在“调试”-> “选项”-> “抑制模块加载时的 JIT 优化”下禁用此选项(仅管理)。
之前提交的连接报告:
Https://connect.microsoft.com/visualstudio/feedback/details/2116788/flag-optimize-is-passed-to-the-debugger-even-while-the-build-settings-optimize-code-is-not-enabled-on-mvc-c-web-projects-when-using-just-my-code.
还请确保所有的项目都处于调试模式,优化代码未经检查,如下所示:
VS2015项目不再在调试模式下运行
我发现,当您更新一个依赖于引用项目(您可能已经修改了版本)的 Nuget 包时,它会用 dll 的 Nuget 版本替换它。
为了在更新(或添加)你的 nuget 包之后修复这个问题,你需要删除对 dll 的引用(例如 NPoco) ,并在修改后的版本中为项目添加一个项目引用。
只是有一个类似的问题,我能够通过清理我的解决方案3次和重建修复。希望这也能帮到其他人。
如果有人仍然有这个问题,对我来说,这是因为我混淆了 GAC 安装软件,我试图调试。
核聚变记录仪帮我搞清楚了。
在我的案例中,我为我的项目删除了 Webapplication.dll,并删除了发布文件夹中的内容。重建项目再次和它的工程为我。
Webapplication.dll
“优化代码”选项在可视化工作室项目级别。删除调试模式。
这种情况在 VS2017中发生过,甚至在将配置更改为 Build 之后也是如此
右键单击 解决方案 > 属性 > 配置管理器 > 活动解决方案配置: 新建 为新的解决方案配置命名。从“调试”中复制设置。
我为这个错误做了所有的事情,但是只有这个解决方案起作用了。
在我的例子中,一些狡猾的骗子把这个放到 AssemblyInfo.cs 文件中:
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
把它评论出来,它就开始工作了
这个问题的另一个原因是下面的“汇编级别”属性:
[assembly: System.Diagnostics.Debuggable(true, false)]
(我只是偶然发现了这一点... ... 当一个人遇到这样的问题时,谁会检查 AssemblyInfo.cs... ... 对——没有人)
Edit: 刚刚看到有人已经添加了这个属性... ... (虽然还有其他参数)-还有-这个属性的原因也是“从 exe 反编译”(我们丢失了那个特定项目的源代码:-/)
这是一个典型的 Microsoft 错误,可能有20个解决方案。对我来说,我重新启动了运行2017年视觉工作室的服务器,它解决了这个问题。
我今天第一次遇到这个问题(在 VisualStudio2017中)。对我来说,这是由我的应用程序的不同版本造成的,它是以发布模式构建的,运行在我正在调试的 IIS 中的相同应用程序池下。我为不同版本的应用程序提供了自己的应用程序池,这样问题就消失了。
这种情况发生在我使用 NuGet 软件包时。
假设您想调试来自 Project1的代码..。
Project1
如果解决方案中的任何项目(。Sln) ,请确保将其删除。与其添加 Project1的 NuGet 包,不如添加 Project1(。Csproj)直接作为对解决方案中需要 Project1的任何给定项目的引用。通过这种方式,您可以在调试的同时逐步完成代码,而且 VisualStudio 不会再对“发布”版本大喊大叫。
如果 Project1来自不同的解决方案(。Sln) ,您可以右键单击当前解决方案,然后选择“添加现有项目”... 例如,选择 Project1.csproj。然后转到任何需要 Project1 = > 右击 = > Add = > Reference 的项目,选择 Project1。
我在 VisualStudio2019中也遇到了类似的问题 以下步骤解决了我的问题 Debug-> Options-> Uncheck Enable Just my code 选项
在将我的项目移动到一台新机器上之后,我也遇到了同样的问题。
下载适当的 Target 框架对我来说很有用。我的项目使用。NetFramework4.7.2下载后,错误消失了。Net Framework 4.7.2.
右键单击解决方案并选择“属性”。
然后,转到左侧的 ConfigurationProperties,并在其下选择 Configuration。 确保您正在运行的项目的配置是在“调试”中,而不是在“发布”中。
如果配置是在’发布’你会得到这个错误。
我试过了。 清理整个溶液, 重建整个解决方案, 重新启动 Visual Studio..。 但是没有帮助。
终于,
我重启了我的电脑
然后开始视觉工作室,清洁和重建,然后调试工作完美无缺:)
对我来说,这一切都是在中午发生的。
尝试清理,删除所有的 BIN 和 OBJ 文件夹... 没有工作。
为了修复它,我不得不停止/启动 ASP.NET 解决方案的 IIS 应用程序池。
关闭和重新启动视觉工作室为我工作
在 ProjectName.csproj.user有一些高级设置。删除后,它工作
ProjectName.csproj.user
你可以通过这个链接看到解决方案: Https://social.msdn.microsoft.com/forums/vstudio/en-us/d70966e3-794f-4b48-88e1-3dd44a65be89/dubugger-doesnt-work-quotyou-are-debugging-a-release-buildquot?forum=visualstudiogeneral
更改以调试选择列表
在我的例子中,我检查了调试构建配置的 Optimize 代码。确保所有项目的所有调试配置都未选中此选项。
在阅读了上面的无数解决方案之后,我退出了 VS 并重新启动了它。是的,没错,我一次又一次地关机。而且,是的,成功了。
简短回答(FIX) :
在工具-> 选项-> 调试-> 常规中启用 抑制模块负载的 JIT 优化选项
原因是: 如果试图调试代码,则在代码未经优化时更容易。当代码被优化时,编译器和运行时对发出的 CPU 代码进行更改,以便它运行得更快,但是与原始源代码的映射不太直接。如果映射不那么直接,调试器通常无法告诉您本地变量的值,代码单步执行和断点可能无法像您预期的那样工作。
工作原理: 调试器公开一个选项,该选项控制使用优化编译的 DLL 在目标进程内启用加载时发生的情况。如果未选中此选项(默认状态) ,则当。NET 运行时将 MSIL 代码编译成 CPU 代码,它保持启用优化。如果选中该选项,则调试器请求禁用优化。
更多信息
用于删除所有 bin 和 obj 文件夹和文件的 PowerShell 代码片段:
Get-ChildItem .\ -include bin,obj -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse }