Visual Studio 2012 Express 中编辑和继续时的陈旧代码警告
Stale Code Warning on Edit and Continue in Visual Studio 2012 Express
在我的大多数项目中,如果我在调试模式下看到一个小错误,我可以在调试期间编辑代码,选择应用代码更改,然后继续。
这通常适用于大多数微小的变化。如果更改过于广泛,它会说模块内存不足 space,或者如果更改修改了 try-catch 块,它会搞砸堆栈展开,因此这些特殊情况需要重建并重新启动。但几乎所有其他内容都可以编辑并继续。
但是对于这个项目,无论多么微不足道的每一个微小的变化我都会收到一条消息"The source file is different from when the module was built. Would you like the debugger to use it anyway."如果我选择是,那么我会收到一条警告,说我将使用陈旧的代码。
为什么这个项目无法更新源代码以与编辑保持同步并继续更改?我是不是不小心弄乱了项目设置?
更新
我已经尝试了提出的所有解决方案 here 但没有成功。这显然是一个常见问题,因为 SO 上有很多关于此主题的帖子。不过好像从来没有人有靠谱的解决办法,可见VS Edit and Continue的脾气还是挺大的。
打开了 VS 的第二个实例并加载了一个我知道编辑并继续工作的先前项目。我重新验证它确实有效。然后我将项目属性并排放置并验证每个开关和设置完全相同。然后我将 VS 选项和设置并排放置,并验证每个设置完全相同。然而编辑并继续在一个项目中工作,而不是在另一个项目中。
显然,编辑并继续与使用 #import 指令链接的 COM 对象不兼容。
我发现我的项目中只有一个模块在编辑和继续时有陈旧代码。该模块使用#import 指令引入一个ADO COM 对象。
编写一个快速包装器 class 来封装 COM 内容并将其困在自己的模块中解决了我的问题。
MSDN 似乎没有在他们的文档中明确说明这一点
https://msdn.microsoft.com/en-us/library/0dbey757%28v=vs.110%29.aspx
在我的大多数项目中,如果我在调试模式下看到一个小错误,我可以在调试期间编辑代码,选择应用代码更改,然后继续。
这通常适用于大多数微小的变化。如果更改过于广泛,它会说模块内存不足 space,或者如果更改修改了 try-catch 块,它会搞砸堆栈展开,因此这些特殊情况需要重建并重新启动。但几乎所有其他内容都可以编辑并继续。
但是对于这个项目,无论多么微不足道的每一个微小的变化我都会收到一条消息"The source file is different from when the module was built. Would you like the debugger to use it anyway."如果我选择是,那么我会收到一条警告,说我将使用陈旧的代码。
为什么这个项目无法更新源代码以与编辑保持同步并继续更改?我是不是不小心弄乱了项目设置?
更新
我已经尝试了提出的所有解决方案 here 但没有成功。这显然是一个常见问题,因为 SO 上有很多关于此主题的帖子。不过好像从来没有人有靠谱的解决办法,可见VS Edit and Continue的脾气还是挺大的。
打开了 VS 的第二个实例并加载了一个我知道编辑并继续工作的先前项目。我重新验证它确实有效。然后我将项目属性并排放置并验证每个开关和设置完全相同。然后我将 VS 选项和设置并排放置,并验证每个设置完全相同。然而编辑并继续在一个项目中工作,而不是在另一个项目中。
显然,编辑并继续与使用 #import 指令链接的 COM 对象不兼容。
我发现我的项目中只有一个模块在编辑和继续时有陈旧代码。该模块使用#import 指令引入一个ADO COM 对象。
编写一个快速包装器 class 来封装 COM 内容并将其困在自己的模块中解决了我的问题。
MSDN 似乎没有在他们的文档中明确说明这一点 https://msdn.microsoft.com/en-us/library/0dbey757%28v=vs.110%29.aspx