【发布时间】:2012-03-05 01:21:17
【问题描述】:
我在 Visual Studio 2010 中工作,我可以很好地编写代码,而且 IntelliSense 甚至运行良好,但是当我在修改代码后运行编译器时,更改并不总是发生。这发生在 c++ Win32 控制台应用程序、c++ Windows 应用程序和 c++ CLR 控制台应用程序中。它甚至在 C# XNA 中也发生过。
我的意思是我将开始编写一个新程序,并编写代码然后去构建以检查错误,然后运行程序,它会正常工作(如果没有错误的话)。但是如果我想迭代代码以添加我实现的功能(其中一些应该会极大地改变输出),就好像它是在第一次构建时一样。此外,如果我插入断点,它们并不总是像它们被忽略一样(除了那些未触及的文件)。虽然当我在这些时候进行构建时,编译器确实会正确抛出错误(有意地和意外地插入),并且只有在这些点上才会进行所有更改。
我发现的唯一解决方法是在每次修改后进行完全重建,但这不是必需的,因为我没有添加标题或更改编译顺序。有时它会忽略在 cout 中更改单个字符的修改。
总结:
- 编译器会忽略自上次构建以来所做的更改
- 编译器会忽略修改文件中的断点
- 必须执行完全重建才能进行更改并设置断点。
有人对此有什么想法吗?
编辑:似乎将工具>选项>“项目和解决方案”>“构建和运行”>“运行时,项目过期时”更改为“提示构建”确实可以解决问题。虽然每次都被问到很烦人,但它并不那么烦人,而是不得不手动请求重建。需要做进一步的迭代,看看这是否只是表面的。
edit2:在继续迭代当前项目后,似乎此更改并不能解决问题,但仅适用于主文件,任何子文件仍需要完全重建才能进行修改,即使是小的修改。
【问题讨论】: