以下模块是在启用优化或没有调试信息的情况下构建的

Posted

技术标签:

【中文标题】以下模块是在启用优化或没有调试信息的情况下构建的【英文标题】:The Following Module was built either with optimizations enabled or without debug information 【发布时间】:2010-10-23 01:14:03 【问题描述】:

调试时,我无法在我的 VS 2008 Web 项目中摆脱这个问题。我已经检查过它在有问题的非 Web 项目上处于调试模式,并且它处于 Active(Debug) 状态。删除了 Windows 中我的 .NET 2.0 临时文件夹中的所有项目。不知道还能在这里做什么。

【问题讨论】:

我重置了 Visual Studio 设置然后解决了问题 【参考方案1】:

尝试在工具/选项/调试/选项中禁用“仅启用我的代码”。

【讨论】:

我做到了,它奏效了。我能够使用断点并逐步执行代码。我不明白。为什么它起作用了? (我正在使用 VS2010 调试由 Win 服务引用的托管 C++ 模块) 我刚遇到这个问题,您的解决方案对我有用。谢谢! 它可以工作,但在调试时可能会导致一些不必要的副作用:blogs.devsource.com/devlife/content/net_general/… 在 VS2010 中,此复选框位于“调试”>“选项和设置”中,然后在“调试”>“常规”下 由于选项的重建,这有效吗?什么是交易。我确实解决了这个问题,但为什么呢?【参考方案2】:

我遇到了同样的问题,发现我没有在我的构建中输出我的调试信息。如果您右键单击项目并转到“属性”,然后选择“构建”选项卡,在页面底部有一个“高级...”按钮,它将显示您的设置为您输出调试信息。将其设置为“完整”,错误应该会消失。

【讨论】:

这是正确答案。当您想在开发模式下本地调试应用程序时,您应该输出“完整”调试信息。您应该这样做,而不是“启用仅我的代码”答案,因为该答案可能会产生意想不到的副作用(如上所述)。 @Tod Thomson,我不确定你为什么声称这是正确的答案,因为我刚才在调试我的 Web 应用程序并尝试进入类库时看到了这条消息,非常类似于问题中描述的配置。我的 Debug Info 设置是 full,我没有理由相信它会有所不同。 @R.Schreurs 我尝试了此页面上的所有其他内容,唯一对我有用的是这个答案。如果它不适合您,请随时在此处尝试其他方法/提供您自己的答案。 这是微软的错误。不要说“应该”。除非你说“错误应该消失,但它是微软,所以你应该重新考虑你的生活”【参考方案3】:

我刚遇到这个问题,很快就决定发布的其他答案不适用于我。

我是该项目的所有者,我知道它是使用调试信息构建的,并且没有进行优化。此外,我从不乐意选择禁用警告作为我的第一选择。隐藏/忽略此警告可能会成为未来调试会话中的问题。

由于这只是在我signed the assembly 之后才开始发生,这让我想到了我的快速修复:暂时删除我的 DLL 的强名称(并消耗 EXE)。瞧!问题解决了。

更好的长期解决方案可以采取添加构建后操作来更新GAC 的形式,使其具有最新版本的签名 DLL。

但就目前而言,我很高兴能从这种转移注意力中继续前进,并继续解决导致我进入此调试会话的问题。

【讨论】:

我的情况与你类似,但采取了简单的方法...我卸载了将这个 DLL 放入 GAC 的程序,因为它只是我正在调试的旧版本. 另外 +1 建议修复问题的根源,而不是像所有其他建议取消勾选“仅启用我的代码”一样启用解决方法【参考方案4】:

已解决。删除了相关 dll 的所有出现(所有项目)。

【讨论】:

我关闭了所有引用项目和我的活动解决方案打开的 VS/VWD 会话。然后我删除了问题 dll 及其配套 pdb 的每个实例。接下来,我删除了 .NET 框架结构中临时调试网站位置下的所有内容(对于这个项目,它是 C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files[myWebsite])。在我关闭 VWD 之前,这给了我一个早期版本的“正在使用的文件”错误。然后我重新打开了项目并修复了项目代码中所有未解决的错误和警告。只有这样错误才消失。【参考方案5】:

VS2012,清理并重建为我解决了这个问题。 “属性” -> “构建” -> 优化代码未选中。 “属性”->“构建”->“高级”->调试信息:完整

【讨论】:

我们需要更改设置吗 这在调试 Visual Studio 2010 加载项时对我有用。以前设置为none 不适合我,但在删除 bin 和 obj 文件夹后,清理和重建解决方案再次起作用:)【参考方案6】:

查看此链接

http://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/43cb16ba-0759-42ab-8e7d-9f168ace3b6f

尝试在工具->选项->调试->常规中取消选中“只是我的代码”。

对我有用

【讨论】:

【参考方案7】:

猜测 VS 2008 没有正确重建 dll。

1) 删除所有出现的dll

2) 重建解决方案

这应该可以解决它。

【讨论】:

我删除了我的网络应用程序的 bin 目录,然后全部重建。这解决了它!【参考方案8】:

检查您的构建配置选项。确保关闭优化并定义 DEBUG 常量。

【讨论】:

选择了构建,优化肯定是关闭的。【参考方案9】:

如果一切都失败了,请尝试在项目的属性中重命名程序集名称。这为我解决了这个问题。

【讨论】:

在花费数小时并在互联网上搜索我遇到的所有内容之后,这很有效。必须缓存一些东西?【参考方案10】:

我也遇到了这个问题,由于某种原因它发生了 3 或 4 次;我认为这一定是 Visual Studio 2005 的错误/故障(或至少是我的安装)。

这每次都有效:修复它我

    右键单击我的解决方案并单击属性。 打开配置管理器。 在下拉菜单中选择“调试”(如果尚未选择)。 取消选中构建。然后重新检查它。 重建解决方案。

【讨论】:

【参考方案11】:

工具 > 选项 > 调试 > 符号 > 指定排除的模块 查看排除模块列表中的 dll 或 exe 是否

【讨论】:

【参考方案12】:

至少对于非 Web 应用程序这是可行的:

发件人:http://www.stellarpc.com/articles/board.aspx?id=40

2 - 允许调试...

由于在您的应用程序中构建了其中一个程序集的性质,您需要更改一些设置以允许 Visual Studio 调试器处理代码。

在解决方案资源管理器中右键单击任何有问题的项目,然后选择“属性”。这将打开项目属性面板,让我们可以访问我们项目的许多选项。导航到“编译”选项卡(如果您在 C# 环境中,则导航到“构建”)并从屏幕底部选择“高级编译选项...”。这向我们展示了一个包含两个关键领域的提示:

1) 优化 - 取消选中“启用优化”

2) 生成调试信息 - 确保选项设置为“完整”

【讨论】:

有趣...我的项目是这样配置的,即使使用这种配置,消息仍然出现。所以这还不是最终的解决方案【参考方案13】:

我在某个文件夹中的解决方案遇到了这个问题,但如果我将它移到另一个文件夹或其他人构建它,我没有收到消息。我进行了清理、重建,甚至重新启动,但如果没有此消息,仍然无法让原始文件进行调试。我在我的系统中搜索导致错误的文件的副本,发现副本保存在

c:\User\username\AppData\Local\Assembly\dl3

这是在 Win7-64 上,但在其他 Windows 操作系统上类似。我删除了在那里找到的所有副本,我不再收到消息。我不需要取消选中“仅启用我的代码”。

另外,这是一个 WPF 应用程序,但我在搜索中遇到了这个线程,所以希望这对其他人有帮助。

【讨论】:

【参考方案14】:

我可以通过以下步骤解决此问题:

    右键单击解决方案(不是项目),然后选择“属性” 在左侧面板中,选择“配置属性” 在右侧面板中,为您的项目选择“配置”列下的“调试”

如果您没有在解决方案资源管理器中看到该解决方案,请按照以下步骤操作:

    在菜单栏中,转到工具 -> 选项 在左侧面板中,选择“项目和解决方案”(您可能需要选中窗口左下角的“显示所有设置” 在右侧面板中,选中“始终显示解决方案”

我希望这会有所帮助。

【讨论】:

【参考方案15】:

这些我也有。而我已经完成了这一切。每次我从源代码控制中获得整个解决方案的新副本时,似乎都会发生这种情况。因此,如果我们已经完成了所有这些,删除了 web 项目中所有引用(程序集)的 dll 和 .pdb 文件,使用了解决方案上的 clean 选项,删除了临时文件,关闭了 VS 并重新打开,确保选择了调试模式并设置为满,优化关闭,还有什么?!?!?!

【讨论】:

我也迫切需要一个解决方案。它甚至无法生成 pdb 文件。【参考方案16】:

我在 Visual Studio 2010 中的 Web 项目中遇到了同样的问题,最后我找到了收到此消息的原因。我所做的是更改 Visual Studio 上现有的调试选项:

转到工具->选项->调试->符号->所有模块 选中“除非排除”单选按钮 单击“指定排除模块”链接,然后删除要调试的 DLL。

在我的情况下,它是我的 web dll 文件...

【讨论】:

【参考方案17】:

我在尝试远程调试属于不同子网的计算机上的应用程序时遇到了这个问题。如果机器在同一个子网上,我可以在跨网络运行代码时调试和单步执行代码。更改子网后,虽然我在从网络运行时无法单步执行并且得到“以下模块是在启用优化或没有调试信息的情况下构建的”。

解决方案?简单。将构建的解决方案复制到托管远程调试的机器上并在本地运行。

【讨论】:

【参考方案18】:

在 VS 2010 winForms 项目中是否发生过这种情况。看到这里的大多数人都有网络项目,我认为这与访问存储项目的文件夹有关。我这样说是因为当我遇到这个问题时,Google Drive 正在同步我保存项目的文件夹。似乎仅仅禁用同步并不能解决问题。

我的解决方案类似于上面的答案之一:

转到“项目属性 > 编译 > 高级编译选项” 选中“启用优化” 将“常规调试信息:”设置为“无” 未选中“定义调试常量” 然后按下确定 然后返回并将选项返回到初始状态。

希望这对某人有所帮助,因为这似乎仍然会发生。

【讨论】:

【参考方案19】:

按照这个:(第一次停止调试) 1:右键项目解决方案名称项目 -> 属性 2:在配置属性下选择配置管理器 3:将配置改为debug并点击close 4:将配置改为debug并点击Apply -> OK 现在重建解决方案....!

【讨论】:

【参考方案20】:

对我来说,选中项目属性中的“优化代码”框,保存,取消选中它,然后重新保存为我做了。

禁用“仅启用我的代码”也有效,但这更像是一种变通方法而不是修复,因为我不想要该设置。

【讨论】:

【参考方案21】:

我也遇到过同样的问题,但原因和解决方法不同。 该窗口与 Gustavo(上图)显示的窗口相同,但路径位于: "\users\zzz\AppSettings..."(其中 zzz 是 Windows 用户名)

我有一个 Excel 插件 - 我正在测试插件的安装,所以我通过 VS 安装功能安装了一个副本。 VS 显然是在尝试调试已安装的副本和我刚刚启动的副本,并且在已安装的副本上找不到调试符号。

上述解决方案均无效(无副作用),

解决方案: 卸载插件,并手动删除应用设置中的文件。

【讨论】:

【参考方案22】:

你提到这是一个网络项目......你有吗

<compilation debug="true />

在您的 web.config 中?

【讨论】:

【参考方案23】:

在使用 Release 配置构建后,我遇到了同样的问题。 事实证明,当我切换回 Debug 时,VS 没有检测到任何差异,因此它没有更新 bin 文件夹中的 .dll 和 .pdb 文件。

这对我有用:

    运行 iisreset(清理临时文件夹) 保存 web.config(强制 VS 实际重建) 在调试时重建 启动项目

【讨论】:

你为什么不直接使用构建菜单上的重建命令?无论是否检测到更改,这都会强制重建所有模块。 @Ron 抱歉,我不记得这是不久前的所有细节,我认为该版本存在问题,并且从构建菜单重建并没有按预期清除文件。 【参考方案24】:

尝试重建然后调试。

【讨论】:

【参考方案25】:

我的情况如下:webservice 引用了 lib1.dll。后来我删除了参考,因为它不再使用了。但是 lib1.dll 保留在 bin 文件夹中。 因为没有引用库,所以重建和清理操作没有帮助。 从 bin 文件夹中手动删除 lib1.dll 后,我摆脱了此消息。

【讨论】:

【参考方案26】:

如果您要发布到 IIS 并且不使用内置 Web 服务器 - 或 IIS express - 确保您的发布配置文件设置处于调试模式。默认情况下,在 vs 11 中它处于发布模式。

【讨论】:

【参考方案27】:

补充一点,我正在查看此博客以找到解决我面临的相同问题的方法。不幸的是,上面提到的解决方案对我没有帮助。最后我发现,我正在通过安装程序安装我的位(连同 .pdb)并在安装文件夹上明确设置权限。

因为即使文件浏览器显示了正确的文件,VS 也无法加载 pdb,但它给出了上述相同的错误。

在我取消选中“仅启用我的代码”并从安装程序中删除权限设置后,VS 开始加载模块。

【讨论】:

【参考方案28】:

对我有用的一种配置如下

项目 -->(您的项目)属性 --> 调试选项卡 确保配置设置为活动(调试) 在“无法调试器”下,确保选中“启用非托管代码调试”

【讨论】:

【参考方案29】:

我正在创建一个 Windows 服务,这对我有用:

卸载服务。 打开命令提示符并转到 c:\Windows\Microsoft.NET\Framework64\v4.0.30319 installutil C:\MyFantabulusWindowService\bin\Debug\MyFantabulusWindowService.exe

成就了伟大!

【讨论】:

【参考方案30】:

案例:在 SharePoint 开发中使用控制台项目测试程序集 - 如果您正在进行 SharePoint 开发并在 VS 中看到此警报,请确保在测试您的控制台应用程序之前将您的 SP 程序集部署到 GAC 如果您的核心 SP 项目有方法您需要调用控制台测试应用程序。

【讨论】:

以上是关于以下模块是在启用优化或没有调试信息的情况下构建的的主要内容,如果未能解决你的问题,请参考以下文章

在启用优化或没有调试信息的情况下构建

生成下面的模块时,启用了优化或没有调试信息

VS无法启动调试:“生成下面的模块时,启用了优化或没有调试信息“

框架是在没有完整位码的情况下构建的 - 框架位码已启用

如何检查 pdb 文件是不是对调试程序集有效

混合模式调试(C++、C#、VB)