VS2013:自从VS2008升级后,编辑并继续不再有效

时间:2014-12-21 16:09:22

标签: visual-studio visual-c++ visual-studio-2013 mfc edit-and-continue

我刚刚将相当大的MFC应用程序从VS2008升级到VS2013 Professional。经过一些小的调整,一切都有效,除了编辑和继续。例如。在断开之后,我将代码行“x = 2”更改为“x = 1”,其中x是局部变量。继续我收到以下错误:

“添加,重命名,删除或更改了全局或静态变量数据类型或初始化:___ ImageBase(引用者:c:\ temp \ vs2013(2014_12_20)\ process \ debug \ jlglob.obj)”

要让EnC完全工作,我必须转到工具 - >调试 - >编辑并继续,然后启用“启用本机编辑并继续”。我不确定这是做什么的,但如果没有检查,我所得到的只是一个警告说“源文件已经改变了......”但它没有尝试重新编译。

我检查了明显的设置:

  • 禁用所有优化

  • 设置“程序数据库以进行编辑并继续/ ZI”

  • 未使用预编译标题

  • / SAFESH:否

  • 平台工具集 - Visual Studio 2013(v120)

  • WinVer = 0x0601

  • 我删除了所有中间文件目录,包括.tlog文件。

这是VS2013的干净安装,没有从VS2008安装中获取设置。知道问题可能是什么?

2 个答案:

答案 0 :(得分:0)

E + C不仅不适用于简单的公式,它甚至不允许任何打字。 目前似乎根本没有解决方案。 在此使用基本控制台应用程序。 正如在很多帖子中所建议的那样,将.NET Framework设置为4.5.1。 到目前为止提到的所有启用/禁用设置......无济于事。

总之,解决方案是没有解决方案!

答案 1 :(得分:0)

这最近刚刚发生在我正在V2010工作的一个项目中,除了合法的案例外,我从来没有这样做过。

最终我将其追踪到我在编辑点之下声明的静态初始化列表。通常我把它们放在我的代码的顶部,但在这种情况下,我一直懒惰,并将其与我的函数内联。似乎每次我在静态列表上面进行编辑并继续编码导致其行的移位时,都会导致此错误。在函数内部移动静态列表也存在同样的问题。

将静态列表移动到我的代码顶部修复了编辑并继续发出问题。

void DoSomething()
{
 int i = 1;
 //Adding a line in here changes the line of the static list below and cause the error.
}

static char* somedata[] = 
{
 "d1",
 "d2",
};

char* GetSomeData(int nIndex)
{
 return somedata[nIndex];
}