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

时间:2016-07-26 23:53:24

标签: visual-studio visual-studio-2015 visual-studio-debugging

背景

我有一个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. 我是否有错误的配置?

19 个答案:

答案 0 :(得分:21)

在Debug-> Options->下禁用此选项;在模块加载时禁止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 Project no longer runs in debug mode

答案 1 :(得分:11)

通过清理我的解决方案3次并重建,我遇到了类似的问题。希望这也有助于其他人。

答案 2 :(得分:3)

我发现当你更新一个对引用项目具有依赖性的Nuget包时(你可能已经修改了版本),它会用dll的Nuget版本替换它。

要在更新(或添加)nuget包之后修复此问题,您需要删除对dll的引用(例如NPoco)并使用修改后的版本添加项目引用。

答案 3 :(得分:3)

在Visual Studio项目级别上有“优化代码”选项。将其删除以用于调试模式。

答案 4 :(得分:3)

这是我在使用NuGet软件包时发生的情况。

假设您要从 Project1 ...

调试代码

如果您在解决方案(.sln)中的任何项目中引用了 Project1 NuGet软件包,请确保将其删除。无需添加 Project1 的NuGet包,而是直接添加 Project1 (.csproj)作为对任何需要的给定项目的引用Project1 。这样,您将能够在调试时逐步执行代码,而Visual Studio不会再抱怨“发布”版本了。

如果 Project1 来自其他解决方案(.sln),则可以右键单击当前解决方案,然后选择“添加现有项目...”,选择 Project1 .csproj。然后转到需要 Project1 =>的任何项目,右键单击=> Add => Reference并选择 Project1

答案 5 :(得分:1)

在我的情况下,我为项目删除了Webapplication.dll并删除了发布文件夹中的内容。再次重建项目,它对我有用。

答案 6 :(得分:1)

右键单击解决方案>属性>配置管理器>活动解决方案配置:新建
为新的解决方案配置命名。从“调试”中复制设置。

我为该错误做了所有工作,但仅此解决方案有效。

答案 7 :(得分:1)

在我的案例中,一些棘手的骗子将其放入AssemblyInfo.cs文件中:

[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]

评论出来,它开始工作

答案 8 :(得分:1)

右键单击您的解决方案,然后选择“属性”。

然后,转到左侧的“配置属性”,然后选择其下的“配置”。 确保正在运行的项目的配置位于“调试”而不是“发布”中。

如果配置处于“发布”状态,则会出现此错误。

答案 9 :(得分:1)

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

下载合适的Target框架对我来说很有效。我的项目使用.Net Framework 4.7.2,下载.Net Framework 4.7.2后错误消失了。

答案 10 :(得分:0)

关闭并重新启动对我有用的视觉工作室

答案 11 :(得分:0)

这对我来说是在一天中间随机发生的。

尝试清理,删除所有 BIN 和 OBJ 文件夹......没有任何效果。

我必须停止/启动 ASP.NET 解决方案的 IIS 应用程序池才能修复它。

答案 12 :(得分:0)

我尝试过.. 清理整个解决方案, 重建整个解决方案, 重新启动Visual Studio ... 但是没有帮助。

最后,

我重新启动了电脑

然后启动Visual Studio,进行“清理和重建”,然后调试就可以完美进行了:)

答案 13 :(得分:0)

我在Visual Studio 2019中也遇到了类似的问题 以下步骤解决了我的问题 调试->选项->取消选中仅启用我的代码选项

答案 14 :(得分:0)

今天(在Visual Studio 2017中)我第一次遇到此问题。对我来说,这是由我的应用程序的不同版本引起的,该版本是在Release模式下构建的,并且在与我进行调试的IIS相同的应用程序池下运行。我为不同版本的应用程序提供了自己的应用程序池,问题消失了。

答案 15 :(得分:0)

这是典型的Microsoft错误之一,可能有20个解决方案。对我来说,我重新启动了运行Visual Studio 2017的服务器,它解决了该问题。

答案 16 :(得分:0)

此问题的另一个原因是以下“程序集级”属性:

[assembly: System.Diagnostics.Debuggable(true, false)]

(我只是偶然发现的。...谁遇到此类问题时谁检查AssemblyInfo.cs ....对-没有人)

编辑:只是看到其他人已经添加了它……(尽管还有其他参数)-而且-此属性的原因也是“从exe反编译”(我们丢失了该特定项目的源代码: -/)

答案 17 :(得分:0)

即使将配置更改为Build,这在VS2017中还是发生在我身上。重新启动VS2017时,此问题已解决

答案 18 :(得分:0)

如果有人仍然遇到这个问题,对我而言是因为我通过安装我试图调试的软件而混淆了GAC。

融合记录器帮助我解决了这个问题。