Поддерживает ли Visual Studio 2008 Windows 98?

Мы рассматриваем возможность обновления 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? Звучит так, но мне трудно поверить, что они так сильно изменились.

Спасибо за вашу помощь.


person Colen    schedule 17.10.2008    source источник
comment
Сбивает с толку, когда они говорят, что не поддерживают это. Иногда это срабатывает, они просто не хотят помогать вам, если вы столкнетесь с проблемами. Иногда это точно не сработает. Я бы хотел, чтобы они различали между тем, делайте это на свой страх и риск, и вы не можете этого делать.   -  person DOK    schedule 18.10.2008


Ответы (7)


Дело не только в .NET 3.5. Речь идет о макросах и определениях файла заголовка Windows SDK, которые вводятся обязательным повышением версии в WINVER. Так что да, Colen, двоичные файлы Visual C ++ 2008 будут нацелены только на API Windows NT, и хотя иногда они могут работать на 98, вы должны предположить, что вы не можете использовать Visual Studio 2008 для нацеливания на Win9x. Вам придется использовать VS2005 или старше.

person Mihai Limbășan    schedule 17.10.2008
comment
Вы должны сделать больше, чем предполагать. Сгенерированные VS9 двоичные файлы физически не загружаются в версиях Windows и Windows NT ниже 5. - person Chris Becke; 27.10.2008
comment
Не думайте, что я предполагаю. Вы можете поиграть с флагами заголовка PE-файла на этапе компоновщика, чтобы загрузчик 9x PE правильно проанализировал вывод VS9. Тогда это просто вопрос разрешения импорта DLL. Но существует большой разрыв между нагрузками и правильной работой, поэтому я использовал время от времени. - person Mihai Limbășan; 29.10.2008

Да, это означает, что: API Windows CreateProcess и LoadLibrary в Windows NT до 2000 и во всей Windows (95,98 И ME) не будут загружать файл DLL или EXE, созданный VS9, потому что PE-заголовок в файле имеет требуемую ОС в поле версии установлено значение 5.

Сообщение об ошибке при попытке загрузить сгенерированный VS9 файл exe будет (очень недружелюбный диалог модальной ошибки) на самом деле говорит: «Вам необходимо обновить операционную систему, чтобы запустить эту программу».

Я экспериментировал с редактированием поля до 4 - двоичный файл будет загружен, но любое использование c-runtime VS9 приведет к зависанию или сбою процесса. Есть способы заставить проекты VS9 не использовать свои собственные среды выполнения c, но если для вас важно массовое использование функций C ++, этот подход не будет масштабироваться за пределы небольшого приложения.

VS8 / VS2005 имеет большинство функций VS9, но по-прежнему ориентирован на ранние версии ОС, поэтому в моем магазине мы пока придерживаемся этого.

person Chris Becke    schedule 18.10.2008

Естественно, что они не поддерживают старые версии своей операционной системы на своих новых продуктах. Им потребовалось бы больше денег (не только в денежном выражении, но и в затруднении или невозможности предоставления некоторых новых полезных функций), чтобы заставить вещи работать с ограничениями (а часто и ошибками) старых систем. Это происходит постоянно и со всеми; новые версии gcc отказываются от поддержки старых, менее популярных архитектур; для новых выпусков glibc требуется более свежая минимальная версия ядра; и так далее.

Эти операционные системы давно сняты с производства; с точки зрения Microsoft, никто не должен их больше использовать. Если вы все еще хотите развиваться для них, вы можете использовать старые инструменты того же года выпуска.

person CesarB    schedule 17.10.2008

согласно следующей ссылке, Windows 98 не поддерживается .NET 3.5, поэтому я предполагаю, что это то, что они означают. Вы все еще можете разрабатывать .NET 2.0 и более ранние версии, но если вы используете библиотеки 3.5, Windows 98 не поддерживается.

Информация о .NET 3.5

person Jeremy B.    schedule 17.10.2008

На данный момент 3.5 Framework даже не устанавливается на Windows 2000 Server. Так что я не верю, что они появятся на 95, 98 или NT. Microsoft больше не хочет брать на себя ответственность за поддержку этих устаревших операционных систем.

person JFV    schedule 17.10.2008
comment
Пожалуйста, не используйте такие термины, как M $. Это не подходит для этого сообщества. - person Rob; 18.10.2008
comment
К сожалению, я начал с поддержки, а недавно перешел на разработку. Думаю, некоторые старые привычки все еще сохраняются. Спасибо за редактирование! - person JFV; 18.10.2008

Я бы порекомендовал вам воспользоваться этим как возможностью, чтобы прекратить поддержку Windows 9x. Это хороший повод для этого. И, по крайней мере, если вы пишете код C / C ++ для Win32 API, жизнь становится намного проще, если вы можете предположить, что целевой ОС является Windows 2000 или более поздняя версия.

person JesperE    schedule 17.10.2008

Хотя я согласен с JesperE, Windows 98 составляет такой небольшой процент пользователей, что нет смысла ориентироваться на них, если, конечно, вы не знаете, что большой процент ваших клиентов на самом деле использует Windows98.

В любом случае, вы действительно можете нацелить Windows 98 в Visual Studio 2008 (вы не можете разрабатывать в Windows 98). Однако вы должны нацеливать свои проекты только на .NET 2.0, вы не можете использовать какие-либо функции 3.0 или 3.5.

person Its me    schedule 17.10.2008