从Visual Studio 6升级有哪些令人信服的论据

What are some convincing arguments to upgrade from Visual Studio 6?

本文关键字:令人信服 Visual Studio 6升      更新时间:2023-10-16

我有一个客户仍在使用Visual Studio 6构建生产系统。他们编写使用STL并在多处理器机器上运行的多线程系统。

偶尔,当他们更改服务器机器的规格或增加其负载时,他们会感到"奇怪",难以重现错误。。。

我知道Visual Studio 6的开发有几个问题,我想说服他们改用Visual Stuio 2005或2008(他们有Visual Studio 2005,并在一些项目中使用它)。

此问题的目的是列出已知问题或升级原因的列表,以及讨论或报告这些问题的链接。在现实生活中讲述这些问题是如何折磨你的,这也很有用。

64位系统不支持,与Vista存在兼容性问题,Microsoft于2008年4月8日取消了对的扩展支持

http://msdn.microsoft.com/en-us/vbrun/ms788708.aspx

未修补的VC6 STL不是线程安全的。请参阅此处http://www.amanjit-gill.de/articles/vc6_stl.html,补丁程序不包括在服务包中,您必须直接从Dinkumware获得(从这里http://www.dinkumware.com/vc_fixes.html)然后将它们应用于每个安装。。。

我们在工作场所看到的最大问题是它无法处理哪怕是稍微复杂的模板类或函数。仅此一点就迫使公司中一些最忠实的VS6粉丝升级并开始使用VS2005。除了模板问题,intellisense要好得多,调试更容易、更准确,许多人发现IDE更容易导航。到目前为止,我们看到的唯一缺点是2005年的构建时间比6年的要长一些(但这可能是编译器更健壮的副作用)

您也可以查看这些网站,了解VS6:中已知问题的样本

  • http://louisville.edu/~ecrouc01/CECS302/VisualCPP.htm
  • http://www.acceleratedcpp.com/details/msbugs.html

我相信,如果你四处走走,你会找到更多的。

VS6不根据当前的C/C++标准编译代码。例如,

  • 它有不正确(过时)的循环作用域规则。现在至少有一个MSFT SDK已经更新为期望正确语义的代码,因此该SDK甚至不再使用VS6进行编译。
  • 它很难编译除最琐碎的模板构造之外的所有模板构造。
  • 它将编译一些在最近的标准更新中被宣布为非法的模板构造(因为这些构造实际上并没有达到普通用户的预期)。

运算符new不符合C++规范,并且在分配失败时不会抛出异常,修复这一问题并非易事。

请参阅:http://msdn.microsoft.com/en-us/magazine/cc164087.aspx

我升级的最大原因之一是标准兼容的C++编译器(尽管仍然不是100%),所以我可以在我的项目中利用更多的C++功能,而不用担心会导致难以找到的错误的奇怪黑客和解决方案。

与Vista不兼容。见鬼,VS 2005在Vista方面有一长串问题。

话虽如此,VS中的大多数改进似乎适用于C++本机代码之外的所有内容。我看到的是更多的标准合规性,这很重要,但并不引人注目。

Visual Studio 6与最新的Windows SDK不兼容,因此无法(至少很容易)使用最新的操作系统功能。

虽然我不再有具体的细节,但我只想说一下,当我们在工作中升级时,新编译器发现了相当多的错误,VC 6悄悄地忽略了这些错误。仅通过升级就提高了产品的稳健性。

如果他们使用STL,他们可能会对最近发布的功能包感兴趣,其中包括TR1的实现。

我已经升级了我的东西,但相对来说并不复杂。升级的一个缺点是VS 2005 DLL Hell

p>VS 2008版本的STL使用/clr编译,因此如果他们有兴趣过渡到托管世界,他们不必丢失所有旧代码。

默认情况下,新版本具有更好的编译器和更好的库。但将现有项目移植到较新的工作室并不总是容易的,而且您可以手动升级编译器和库。

就在一年前,我还在使用带有英特尔编译器的VS 6.0。当时我们只有一堆旧代码,它们威胁迭代器作为指针,反之亦然,这一切都非常混乱和可怕,所以这让我们无法升级。

但我毕竟不得不升级,因为我目前使用的框架根本无法在VS6.0上运行。认为这是最终原因:-)

第三部分库也只支持有限数量的编译器。因此,您的客户端可能无法接受错误修复或功能升级。

例如,即使是一个广泛使用的库,如Boost,也只支持VS 7.1和更高版本(源代码)

您可能也会在数据执行保护(DEP)方面遇到一些问题,因为VC6附带了旧的ATL版本。和往常一样,详情请咨询陈。