从VS 6过渡到VS 2010

时间:2010-10-27 21:01:32

标签: visual-studio-2010

我终于实现了从Visual Studio 6(1998年份)到VS 2010的飞跃。这很痛苦,但经过八个小时的工作,我的200KLOC Win32程序实际上已经运行了!

我对VS转换项目的方式感到失望。

[1] VS忽略预编译的目标,如果它不是“stdafx.cpp”

[2]在具有多个配置的项目中,VS会忘记某些配置中不包含哪些模块,并且包含所有地方的所有模块。这意味着必须重新识别需要排除的每个模块。

[3]如果某些模块不使用预编译的头文件,VS就会失去这种区别,并为每个人分配预编译的头文件。

[4]某些模块的属性是神秘不可改变的。必须删除该模块,然后重新添加。

[5]许多奇怪的错误信息没有意义并且无法解释地消失。

有没有人遇到任何其他惊喜?

多核编译会有很大的不同吗?在我的带有4核的Intel i5 3.2GHz 4GB 64位PC上,200K线的编译为58秒。没有多核,47秒。用。

不过,我不应该抱怨。编译过去需要40分钟。在33 MHz 486上。

2 个答案:

答案 0 :(得分:3)

不再支持Visual C ++ 6.0,所以如果我这样,你会感到宽慰,这本来就有用。

我从VC6到VC7.1 / VC8的主要问题 - VC6中的STL支持已经过时 vis a vis 当前标准,导致有时会出现无法编译的代码,例如:{ STL容器内不再允许{1}}; auto_ptr代码通常不同。

当您在VS2010中构建此警告时,不要忽略警告(您的第5点可能是?),并使用<locale>运行VS2010版本。现在解决警告可以节省数小时的调试时间。

在VS2005发布后的多核编译将并行编译非依赖项目,所以是的,这可以使你的东西构建更快。

好消息是,当尘埃落定时,你会感激你的感动。在VS2010 / VC10中,这是一种更高效的IDE和语言。

答案 1 :(得分:0)

当您有多个非依赖项目时,多核编译会使事情变得更快。缺点是不同汇编的输出相互混合(至少在2005年,不确定2010年),这使得追踪错误有点痛苦。一个项目无法编译和中止,其他项目仍然继续,并且来自中止的最终消息不是彼此相邻 - 它们在日志中间传播。您必须在输出窗口中使用文本搜索功能。

另一件令我恼火的事情(再次,在2005年),是因为他们的宏代码中有一个错误,你不能在录制的宏中使用逗号。据我所知,它仍然没有修复。