-1

在我的大多数项目中,在调试模式下,如果我看到一个小错误,我可以在调试期间编辑代码,选择应用代码更改,然后继续。

这通常适用于大多数微小的变化。如果更改过于广泛,则会显示模块内存空间不足,或者如果更改修改了 try-catch 块,则会破坏堆栈展开,因此这些特殊情况需要重建并重新启动。但几乎任何其他东西都可以编辑和继续。

但是对于这个项目,每一个微小的变化,无论多么微不足道,我都会收到一条消息“源文件与构建模块时不同。你是否希望调试器仍然使用它。” 如果我选择是,那么我会收到一个警告,说我将要使用过时的代码。

为什么这个项目无法更新源代码以与编辑保持同步并继续更改?我是否无意中在项目设置中搞砸了?

来源过期警告 旧代码警告

更新

我已经尝试了这里提出的所有解决方案,但没有运气。这显然是一个常见的问题,因为关于这个主题的 SO 上和下有很多帖子。但是看起来没有人有一个可靠的解决方案,显然 VS Edit and Continue 是相当有气质的。

打开 VS 的第二个实例并加载我知道编辑和继续工作的先前项目。我重新验证它确实有效。然后我将项目属性并排放置并验证每个开关和设置完全相同。然后我将 VS 选项和设置并排放置,并验证每个设置完全相同。然而,在一个项目中编辑并继续工作,而不是在另一个项目中。

4

1 回答 1

0

显然编辑和继续与使用#import 指令链接的 COM 对象不兼容。

我发现我的项目中只有一个模块在编辑和继续时有过时的代码。该模块使用#import 指令引入了一个ADO COM 对象。

编写一个快速包装类来封装 COM 内容并将其困在自己的模块中解决了我的问题。

MSDN 似乎没有在他们的文档中明确说明这一点 https://msdn.microsoft.com/en-us/library/0dbey757%28v=vs.110%29.aspx

于 2016-08-04T19:04:26.710 回答