从 Visual Studio 6 升级有哪些令人信服的论据?
我有一位客户仍在使用 Visual Studio 6 构建生产系统。 他们编写使用 STL 并在多处理器机器上运行的多线程系统。
有时,当他们更改其中一台服务器的规格或增加其中一台服务器的负载时,他们会遇到“奇怪的”难以重现的错误...
我知道 Visual Studio 6 开发存在几个问题,我想说服他们迁移到 Visual Stuio 2005 或 2008(他们有 Visual Studio 2005 并将其用于某些项目)。
此问题的目的是将已知问题或升级原因的列表以及讨论或报告这些问题的链接放在一起。 了解这些问题如何困扰您的现实生活中的“恐怖故事”也会很有用。
I have a client who is still using Visual Studio 6 for building production systems. They write multi-threaded systems that use STL and run on mutli-processor machines.
Occasionally when they change the spec of or increase the load on one of their server machines they get 'weird' difficult to reproduce errors...
I know that there are several issues with Visual Studio 6 development and I'd like to convince them to move to Visual Stuio 2005 or 2008 (they have Visual Studio 2005 and use it for some projects).
The purpose of this question is to put together a list of known issues or reasons to upgrade along with links to where these issues are discussed or reported. It would also be useful to have real life 'horror stories' of how these issues have bitten you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(14)
默认情况下,较新的版本具有更好的编译器和更好的库。 但将现有项目移植到较新的工作室并不总是那么容易,您可以手动升级编译器和库。
一年前我正在使用带有 Intel 编译器的 VS 6.0。 当时我们只有一堆旧代码,它们作为指针威胁着迭代器,反之亦然,这一切都非常混乱和可怕,所以这阻碍了我们升级。
但我毕竟必须升级,因为我当前使用的框架根本无法在 VS 6.0 上运行。 认为这是最终原因:-)
By defoult newer versions have better compiler and better libraries. But it's not always easy to port existing projects to newer studio, and you can upgrade both compiler and libraries manually.
I was using VS 6.0 with Intel compiler just year ago. We just had a bunch of old code then, which was threating iterators as pointers and vice versa, and it was all real messy and scary, so this holded us from an upgrade.
But I have had to upgrade after all, because the framework I'm currently using simply doesn't run on VS 6.0. Think this is the ultimative reason :-)
第三方库也仅支持有限数量的编译器。 因此,您的客户可能无法接受错误修复或功能升级。
例如,即使是广泛使用的 Boost 库也仅支持 VS 7.1 及更高版本(源)
并且您可能还会遇到数据执行保护 (DEP) 方面的一些问题,因为 VC6 附带了旧的 ATL 版本。 与往常一样,请参阅 Raymond Chen 了解详细信息。
Third-part libraries support only a limited number of compilers, too. Your client may not be able to accept bugfixes or feature upgrades as a result.
For instance, even a widely used library as Boost supports only VS 7.1 and later (source)
And you might have some problems with Data Execution Prevention (DEP) as well, because VC6 ships with an old ATL version. As usual, see Raymond Chen for details.
64 位系统不受支持,与 Vista 存在兼容性问题,并且 Microsoft 已于 2008 年 4 月 8 日将其不再提供扩展支持
http://msdn.microsoft.com/en-us/vbrun/ms788708.aspx
Not supported on 64-bit systems, compatibility issues with Vista, and it was moved out of extended support by Microsoft on April 8, 2008
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),然后将它们应用到每个安装...
Unpatched VC6 STL is not thread safe. See here http://www.amanjit-gill.de/articles/vc6_stl.html, the patches aren't included in the service packs and you have to get them from Dinkumware directly (from here http://www.dinkumware.com/vc_fixes.html) and then apply them to each installation...
我们在我的工作场所看到的最大问题是它无法处理稍微复杂的模板化类或函数。 仅这一事实就迫使公司中一些最忠实的 VS6 粉丝升级并开始使用 VS2005。 除了模板问题之外,智能感知要好得多,调试更容易、更准确,而且许多人发现 IDE 更易于导航。 到目前为止,我们看到的唯一缺点是 2005 年的构建时间比 6 中的构建时间要长一些(但这可能是编译器更加强大的副作用)
您还可以查看这些站点以获取已知问题的样本在 VS6 中:
我相信,如果您稍微研究一下,您会发现更多内容。
The biggest problem that we've seen at my workplace is it's inability to handle even marginally complex templated classes or functions. This fact alone has force some of the most devoted VS6 fans in the company to upgrade and start using VS2005. In addition to the template problem, intellisense is much better, debugging is easier and more accurate, and many people find the IDE easier to navigate. The only downside that we have seen thus far is that builds take a bit longer in 2005 than they did in 6 (but that's probably a side effect of the compiler being more robust)
You can also check out these sites for a sampling of known issues in VS6:
I'm sure you could find more if you poked around a bit.
VS6 不根据当前的 C/C++ 标准编译代码。 例如,
VS6 does not compile code according to the current C/C++ standard. For example,
operator new 不符合 C++ 规范,并且不会在分配失败时引发异常,修复此问题并非易事。
请参阅: http://msdn.microsoft.com/en-us/magazine/cc164087.aspx
operator new doesn't conform to the C++ spec and doesn't throw exceptions on allocation failure, fixing this is non trivial.
see: http://msdn.microsoft.com/en-us/magazine/cc164087.aspx
我升级的最大原因之一是符合标准的 C++ 编译器(尽管仍然不是 100%),因此我可以在我的项目中利用更多 C++ 功能,而不用担心可能导致难以发现错误的奇怪黑客和解决方法。
One of the biggest reasons for me to upgrade was the standard compliant C++ compiler ( although still not 100% ), so I could leverage more C++ features in my projects and not worry about strange hacks and workarounds that can lead to hard to find bugs.
与 Vista 不兼容。 哎呀,VS 2005 与 Vista 之间存在一长串问题。
话虽这么说,VS 的大部分改进似乎都适用于 C++ 本机代码以外的所有内容。 我看到的是更多的标准合规性,这很重要,但并不引人注目。
Not compatible with Vista. Heck, there's a long list of issues VS 2005 has with Vista.
That being said, most of the improvements in VS seem to apply to everything other than C++ native code. What I'm seeing is more standards compliance, which is important but hardly dramatic.
Visual Studio 6 与最新的 Windows SDK 不兼容,因此它无法(至少轻松地)利用最新的操作系统功能。
Visual Studio 6 is not compatible with the lasted Windows SDKs, so it cannot utilize (at least easily) the latest OS features.
虽然我不再有具体的细节,但我只想补充一下,当我们在工作中升级时,新的编译器发现了很多 VC 6 悄悄漏掉的错误。 仅通过升级就提高了产品的稳健性。
Though I no longer have concrete details, I'll just throw in that when we upgraded at work, the new compiler found quite a few errors that VC 6 let slip through quietly. Improved product robustness just from the upgrade.
如果他们使用 STL,他们可能会对最近发布的 功能包,其中包括 TR1。
If they use the STL, they may be interested in the recently-released feature pack, which includes an implementation of TR1.
我已经升级了我的东西,但相对来说并不复杂。 升级的一个缺点是 VS 2005 DLL Hell
I have upgraded my stuff but it's relatively uncomplicated. A con to upgrade is VS 2005 DLL Hell
VS 2008 版本的 STL 使用
/clr
进行编译,因此如果他们有兴趣过渡到托管世界,则不必丢失所有旧代码。The VS 2008 version of the STL compiles with
/clr
, so if they're interested in transitioning to the managed world, they don't have to lose all their old code.