17

我们正在考虑从 Visual Studio 2005 升级到 Visual Studio 2008。我发现了以下令人不安的评论:

http://msdn.microsoft.com/en-us/library/6sehtctf.aspx

“从 Visual C++ 2008 开始,Visual C++ 不支持面向 Windows 95、Windows 98、Windows ME 或 Windows NT。”

这是否意味着如果我们用 Visual C++ 2008 重建我们的产品,它们将停止在 Windows 98 机器上工作?听起来很像,但我很难相信他们会做出如此大的改变。

谢谢你的帮助。

4

8 回答 8

15

这不仅仅是关于 .NET 3.5。它是关于由 WINVER 中的强制版本碰撞引入的 Windows SDK 头文件宏和定义。所以是的,Colen,Visual C++ 2008 二进制文件将只针对 Windows NT API,虽然它们有时可能在 98 上工作,但您应该假设您不能使用 Visual Studio 2008 来针对 Win9x。您必须使用 VS2005 或更早版本。

于 2008-10-17T20:30:19.167 回答
3

是的,这确实意味着:2000 年之前的 Windows NT 和所有 Windows(95,98 AND ME)上的 Windows CreateProcess 和 LoadLibrary API 将不会加载由 VS9 生成的 DLL 或 EXE 文件,因为文件中的 PE 标头具有所需的操作系统版本字段设置为 5。

尝试加载 VS9 生成的 exe 文件时的错误消息(是一个非常不友好的模式错误对话框)实际上会说“您需要升级操作系统才能运行此程序”。

我尝试将字段编辑为 4 - 将加载二进制文件,但任何使用 VS9 c-runtime 都会挂起或使进程崩溃。有一些方法可以让 VS9 项目不使用它们的原生 c 运行时,但如果大量使用 c++ 特性对您很重要,那么这种方法不会扩展到小型应用程序。

VS8 / VS2005 具有 VS9 的大部分功能,但仍然针对早期的操作系统版本,这就是为什么在我的商店我们暂时坚持使用它的原因。

于 2008-10-18T06:43:01.257 回答
1

他们的新产品不支持旧版本的操作系统是很自然的。这将使他们花费更多(不仅是金钱成本,而且使提供一些更新的有用功能变得更加困难或不可能)以使事情在旧系统的限制(通常是错误)下工作。这种情况一直在发生,而且发生在每个人身上;新版本的 gcc 放弃了对较旧的不太流行的架构的支持;glibc 的新版本需要更新的最低内核版本;等等。

这些操作系统早已退役;从微软的角度来看,没有人应该再使用它们了。如果您仍想为他们开发,您可以使用相同年份的旧工具。

于 2008-10-17T20:45:18.870 回答
0

根据以下链接,.NET 3.5 不支持 Windows 98,所以我想这就是他们的意思。您仍然可以进行 .NET 2.0 及更低版本的开发,但如果您使用 3.5 库,则不支持 Windows 98。

.NET 3.5 信息

于 2008-10-17T20:27:21.387 回答
0

此时,3.5 Framework 甚至不会安装在 Windows 2000 Server 上。所以我不相信他们会在 95、98 或 NT 上。Microsoft 不想再承担支持这些退役操作系统的责任。

于 2008-10-17T20:27:52.480 回答
0

我建议您以此为契机停止支持 Windows 9x。这是一个很好的理由。而且,至少如果您正在为 Win32 API 编写 C/C++ 代码,如果您可以假设目标操作系统是 Windows 2000 或更高版本,那么生活会容易得多。

于 2008-10-17T21:01:55.670 回答
0

虽然我同意 JesperE,但 Windows 98 的用户比例如此之小,以他们为目标毫无意义,除非您当然知道您的大部分客户实际上正在使用 Windows98。

无论如何,您实际上可以在 Visual Studio 2008 中以 Windows 98 为目标(您不能在 Windows 98 上进行开发)。但是,您的项目必须仅针对 .NET 2.0,不能使用任何 3.0 或 3.5 功能。

于 2008-10-17T23:52:43.173 回答
0

据我了解,使用最新的KernelEx ,所有针对 XP 的 MSVC 版本都可能正常工作(结果取决于您将决定使用多少“最新”功能/特性)

至于 2008 年的答案可能是什么,当时甚至有相当多的补丁库(如果它们被破坏,请检查Wayback Machine上的链接)。

于 2022-02-18T20:40:09.457 回答