Visual Studio 2008是否支持Windows 98?

时间:2023-01-09 01:31:32

We're looking at upgrading from Visual Studio 2005 to Visual Studio 2008. I discovered the following disturbing comment:

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

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

"Beginning with Visual C++ 2008, Visual C++ does not support targeting Windows 95, Windows 98, Windows ME, or Windows NT."

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

Does this mean that if we rebuild our products with visual C++ 2008, they will stop working on Windows 98 machines? It sounds like it, but I have trouble believing they'd make that big a change.

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

Thanks for your help.

谢谢你的帮助。

7 个解决方案

#1


14  

It's not just about .NET 3.5. It's about the Windows SDK header file macros and definitions pulled in by the mandatory version bump in WINVER. So yes, Colen, Visual C++ 2008 binaries will target the Windows NT APIs only and while occasionally they may work on 98 you should assume that you cannot use Visual Studio 2008 to target Win9x. You will have to use VS2005 or older.

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

#2


3  

Yes it does mean that: The windows CreateProcess and LoadLibrary APIs on Windows NT before 2000 and all of Windows (95,98 AND ME) will not load a DLL or EXE file made by VS9 because the PE header in the file has the required OS version field set to 5.

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

The error message upon attempting to load a VS9 generated exe file will (be a very unfriendly modal error dialog) actually say "You need to upgrade your operating system to run this program".

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

I experimented with editing the field to 4 - the binary will be loaded, but any use of the VS9 c-runtime will hang or crash the process. There are ways to get VS9 projects to not use their native c-runtimes but if massive use of c++ features is important to you this approach is not going to scale past a small application.

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

VS8 / VS2005 has most of the features of VS9 but still targets early OS versions which is why at my shop we are sticking with that for the moment.

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

#3


1  

It's natural that they do not support older versions of their operating system on their newer products. It would cost them more (not just monetary cost, but also making harder or impossible to provide some newer useful features) to make things work with the limitations (and often bugs) of older systems. This happens all the time, and with everyone; new versions of gcc drop support for older less popular architectures; new releases of glibc require a more recent minimum kernel version; and so on.

很自然,他们不会在新产品上支持旧版本的操作系统。它会花费更多(不仅仅是货币成本,而且还需要更难或不可能提供一些新的有用功能)来使事情与旧系统的限制(通常是错误)一起工作。这种情况一直发生在每个人身上;新版本的gcc drop支持较旧的不太流行的架构;新版本的glibc需要更新的最新内核版本;等等。

These operating systems have long been retired; from Microsoft's point of view, nobody should be using them anymore. If you still want to develop for them, you can use older tools of the same vintage.

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

#4


0  

according to the following link, windows 98 is not supported by .NET 3.5 so I would imagine that is what they mean. You can still do .NET 2.0 and lower development, but if you use the 3.5 libraries, Windows 98 is not supported.

.NET 3.5 information

根据以下链接,.NET 3.5不支持Windows 98,所以我想这就是他们的意思。您仍然可以执行.NET 2.0并降低开发速度,但如果使用3.5库,则不支持Windows 98。 .NET 3.5信息

#5


0  

The 3.5 Framework won't even install on Windows 2000 Server at this point. So I don't believe that they will on 95, 98, or NT either. Microsoft doesn't want the responsibility of supporting these retired operating systems anymore.

此框架上的3.5 Framework甚至不会安装在Windows 2000 Server上。所以我不相信他们会在95,98或NT上。微软不再希望有责任支持这些退役的操作系统。

#6


0  

I'd recommend that you take this as a opportunity to stop supporting Windows 9x. This is a good reason as any to do so. And, at least if you're writing C/C++ code for the Win32 API, life is much easier if you can assume that the target OS is Windows 2000 or later.

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

#7


0  

While I agree with JesperE, Windows 98 is such a small percentage of users that it makes little sense to target them, unless of course you know a large percentage of your customers are in fact using Windows98.

虽然我同意JesperE,但Windows 98只占用户的一小部分,因此定位它们毫无意义,除非您知道大部分客户实际上使用的是Windows98。

In any case, you can in fact target Windows 98 in Visual Studio 2008 (you can't develop on Windows 98). You must, however, target your projects at .NET 2.0 only, you cannot use any 3.0, or 3.5 features.

在任何情况下,您实际上可以在Visual Studio 2008中定位Windows 98(您无法在Windows 98上开发)。但是,您必须仅在.NET 2.0上定位项目,不能使用任何3.0或3.5功能。

#1


14  

It's not just about .NET 3.5. It's about the Windows SDK header file macros and definitions pulled in by the mandatory version bump in WINVER. So yes, Colen, Visual C++ 2008 binaries will target the Windows NT APIs only and while occasionally they may work on 98 you should assume that you cannot use Visual Studio 2008 to target Win9x. You will have to use VS2005 or older.

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

#2


3  

Yes it does mean that: The windows CreateProcess and LoadLibrary APIs on Windows NT before 2000 and all of Windows (95,98 AND ME) will not load a DLL or EXE file made by VS9 because the PE header in the file has the required OS version field set to 5.

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

The error message upon attempting to load a VS9 generated exe file will (be a very unfriendly modal error dialog) actually say "You need to upgrade your operating system to run this program".

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

I experimented with editing the field to 4 - the binary will be loaded, but any use of the VS9 c-runtime will hang or crash the process. There are ways to get VS9 projects to not use their native c-runtimes but if massive use of c++ features is important to you this approach is not going to scale past a small application.

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

VS8 / VS2005 has most of the features of VS9 but still targets early OS versions which is why at my shop we are sticking with that for the moment.

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

#3


1  

It's natural that they do not support older versions of their operating system on their newer products. It would cost them more (not just monetary cost, but also making harder or impossible to provide some newer useful features) to make things work with the limitations (and often bugs) of older systems. This happens all the time, and with everyone; new versions of gcc drop support for older less popular architectures; new releases of glibc require a more recent minimum kernel version; and so on.

很自然,他们不会在新产品上支持旧版本的操作系统。它会花费更多(不仅仅是货币成本,而且还需要更难或不可能提供一些新的有用功能)来使事情与旧系统的限制(通常是错误)一起工作。这种情况一直发生在每个人身上;新版本的gcc drop支持较旧的不太流行的架构;新版本的glibc需要更新的最新内核版本;等等。

These operating systems have long been retired; from Microsoft's point of view, nobody should be using them anymore. If you still want to develop for them, you can use older tools of the same vintage.

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

#4


0  

according to the following link, windows 98 is not supported by .NET 3.5 so I would imagine that is what they mean. You can still do .NET 2.0 and lower development, but if you use the 3.5 libraries, Windows 98 is not supported.

.NET 3.5 information

根据以下链接,.NET 3.5不支持Windows 98,所以我想这就是他们的意思。您仍然可以执行.NET 2.0并降低开发速度,但如果使用3.5库,则不支持Windows 98。 .NET 3.5信息

#5


0  

The 3.5 Framework won't even install on Windows 2000 Server at this point. So I don't believe that they will on 95, 98, or NT either. Microsoft doesn't want the responsibility of supporting these retired operating systems anymore.

此框架上的3.5 Framework甚至不会安装在Windows 2000 Server上。所以我不相信他们会在95,98或NT上。微软不再希望有责任支持这些退役的操作系统。

#6


0  

I'd recommend that you take this as a opportunity to stop supporting Windows 9x. This is a good reason as any to do so. And, at least if you're writing C/C++ code for the Win32 API, life is much easier if you can assume that the target OS is Windows 2000 or later.

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

#7


0  

While I agree with JesperE, Windows 98 is such a small percentage of users that it makes little sense to target them, unless of course you know a large percentage of your customers are in fact using Windows98.

虽然我同意JesperE,但Windows 98只占用户的一小部分,因此定位它们毫无意义,除非您知道大部分客户实际上使用的是Windows98。

In any case, you can in fact target Windows 98 in Visual Studio 2008 (you can't develop on Windows 98). You must, however, target your projects at .NET 2.0 only, you cannot use any 3.0, or 3.5 features.

在任何情况下,您实际上可以在Visual Studio 2008中定位Windows 98(您无法在Windows 98上开发)。但是,您必须仅在.NET 2.0上定位项目,不能使用任何3.0或3.5功能。