错误:您正在调试 X.dll 的发布版本

100

背景

我有一个ASP.NET MVC应用程序项目和其他各种项目,都在Visual Studio解决方案中。不同的项目使用不同版本的NPoco库,具体如下:

  • MVC项目包含通过NuGet安装的NPoco版本。
  • 其他一些项目包括通过对DLL的引用(而非通过NuGet提供的DLL)安装的(可能是不同的)NPoco版本。
  • 其中一个项目是对NPoco的某个版本进行了一些修改的源代码。

我正在使用Visual Studio 2015 Update 3 14.0.25422.01。

错误

由于某种原因,当我在Visual Studio中使用正常的“启动调试”命令启动此应用程序时,它会启动,但也会产生以下警告:

You are debugging a Release build of NPoco.dll. Using Just My Code with Release builds using compiler optimizations results in a degraded debugging experience (e.g. breakpoints will not be hit).

如果我按继续调试,则所有东西似乎仍然像往常一样工作,包括断点。

这个问题最近才开始出现。

问题

  1. 有人知道上述错误是由什么引起的吗?
  2. 我是否配置有误?
28个回答

2

右键点击解决方案 > 属性 > 配置管理器 > 活动解决方案配置: 新建
给新的解决方案配置起一个名字。从“调试”复制设置。

我为了解决这个错误尝试了很多方法,但只有这个解决方案有效。


1

简短回答(修复):

在“工具”->“选项”->“调试”->“常规”中启用“模块加载时抑制JIT优化”选项。

Enable this option

原因: 如果您正在尝试调试代码,则使该代码未经过优化会更容易。当代码被优化时,编译器和运行时会对发出的 CPU 代码进行更改,以便它运行更快,但与原始源代码的映射关系不直接。如果映射不直接,调试器通常无法告诉您局部变量的值,并且代码步进和断点可能无法按预期工作。

工作原理: 调试器公开了一个选项,用于控制启用带有优化的 DLL 在目标进程内加载时会发生什么。 如果未选中此选项(默认状态),则当 .NET Runtime 将 MSIL 代码编译为 CPU 代码时,它会保留优化。如果选中该选项,则调试器请求禁用优化。

更多信息


1
如果仍有人遇到此问题,那是因为我混淆了GAC,安装了我正在尝试调试的软件。
融合日志记录器帮助我找出了这个问题。

1
在我的情况下,我移除了Webapplication.dll文件和发布文件夹中的内容。重新构建项目后,它可以正常工作。

1

将我的项目移动到新机器后,我遇到了同样的问题。

下载适当的目标框架对我有用。我的项目使用的是 .Net Framework 4.7.2,在下载 .Net Framework 4.7.2 后,错误消失了。


1
另一个导致此问题的原因是以下的“汇编级别”属性:
[assembly: System.Diagnostics.Debuggable(true, false)]

我只是偶然发现了这个问题......当遇到这种问题时,谁会检查AssemblyInfo.cs呢?没错 - 没有人。
编辑:刚刚看到有人已经添加了这个(不过是其他参数) - 同样,这个属性的原因也是“从exe反编译”(我们丢失了那个特定项目的源代码 :-/)。

0

这是典型的微软错误之一,可能会有20种解决方案。对我来说,重新启动运行Visual Studio 2017的服务器就可以解决问题。


0
今天我在Visual Studio 2017中第一次遇到了这个问题。对我来说,原因是我的应用程序的不同版本,在相同的IIS应用程序池下以Release模式运行,而我正在调试该应用程序池。我为不同版本的应用程序分配了自己的应用程序池,问题就消失了。

0

我在VS2017中遇到了这个问题,即使我将配置更改为“生成”,问题仍然存在。当我重新启动VS2017时,问题得以解决。


0

我尝试了...

清理整个解决方案,

重新构建整个解决方案,

重启Visual Studio...

但都没有帮助。

最后,

我重新启动了电脑

然后启动Visual Studio,清理和重新构建,然后调试工作完美无缺 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接