Сравнивается ли удаленная поддержка Windows XP в VS11 с предыдущими выпусками Visual Studio? - PullRequest
8 голосов
/ 12 декабря 2011

Редактировать заметку: После огромного количества плохих отзывов, которые MS получила от своих клиентов в отношении дроп-XP-трюка, они объявили , что будет выпущен патч, который позволит создавать исполняемые файлы дляXP.Таким образом, основа для этого Q на самом деле не большая, но я думаю, что здесь собрана очень интересная информация.


Как установлено здесь: Что особенного в исполняемых файлах, скомпилированных с Visual Studio 11, которыеприводит к тому, что исполняемые файлы не могут быть выполнены в Windows XP?

и в этой ошибке / выпуске Connect: https://connect.microsoft.com/VisualStudio/feedback/details/690617, Visual Studio 11 (запланированный выпуск 2012) больше не будет поддерживать WindowsXP.

Это означает, что вы не можете создать собственный исполняемый файл C ++, который может выполняться в Windows XP .(Одна из причин в том, что новый CRT будет использовать вызовы API Windows, которые доступны только в Windows Vista и выше.)

В один ответ , Андерс пишет:

Кажется, они отказываются от поддержки старых систем в каждом новом выпуске VS (NT4,2000, XP) ...

Что меня сейчас интересует, так это то, что Microsoft откажется от поддержки Windows XPполностью из VS11 C ++ можно на самом деле сравнить с предыдущими выпусками.

Я имею в виду, когда была поддержка какой ОС (NT3.5 / NT4 / 2000sp6 // Win95 / Win98 /...) полностью исключен из Visual C ++.(и «какая часть» Visual C ++ - компилятор, CRT, Windows SDK?)

Например, мне кажется, я знаю, что VC6 - это последняя версия VS, которую можно использовать для создания исполняемых файлов.которые работают на Windows NT4.Кажется, я также помню, что упавшая поддержка Win2k имела больше отношения к используемому вами Windows SDK, чем к фактическому компилятору или CRT, но я не уверен.

Есть ли хороший ресурс, который показываеткакие компиляторы MS в каких настройках могут создавать совместимый код для каких версий ОС?Разве время VS11 (2012 год) больше не поддерживает операционную систему, которая широко установлена ​​(но больше не продается), по сравнению с предыдущими выпусками?


Один интересный момент заключается в том, что мы находимся в серединепереход от C ++ 03 к C ++ 11, и если вы застряли с Windows XP и VC10, вы застряли с ограниченной (и частично нестандартной) поддержкой C ++ 11, которую он может предложить.

Ответы [ 3 ]

8 голосов
/ 05 апреля 2012

Я думаю, что имеет смысл сравнивать даты выпуска VS с тем, когда версии Windows стали не поддерживаться, а не когда были выпущены версии Windows.

Как только ОС достигает конца расширенной поддержки, она прекращает получать обновления безопасности, и любой, кто все еще работает, может считаться ненормальным и игнорироваться (за исключением очень особых случаев). До этого кажется вполне законным (хотя и раздражающим время от времени), что люди все еще используют старые версии ОС и ожидают, что программное обеспечение их поддержит (хотя производители, как сторонние, так и сами Microsoft, могут, конечно, отказаться).

Из Википедии, это когда каждая версия Windows стала (или станет) неподдерживаемой Microsoft:

  • Январь 2020: Windows 7
  • апрель 2017: Windows Vista
  • апрель 2014: Windows XP
  • июль 2010: Windows 2000
  • июль 2006 г .: Windows ME
  • июль 2006: Windows 98
  • июнь 2004 г .: Windows NT 4
  • декабрь 2001: Windows 95
  • декабрь 2001: Windows NT 3

Привязка к деталям в существующем ответе:

  • VS в 2012 году отказался от Windows XP, несмотря на то, что она поддерживалась до 2014 года.
  • VS в 2010 году отказался от Windows 2000, срок действия которого истек вскоре.
  • VS в 2007 году отбросил Win98 / ME, срок действия которых уже истек.
  • VS в 2005 году отказался от Win95 и NT4, срок действия которых уже истек.

Похоже, что VS2012 - это первая версия, в которой прекращена поддержка ОС, которая все еще будет поддерживаться как минимум еще год. Предполагая, что все эти даты верны (я не проверил их дважды; сделал это в основном для собственного интереса).

4 голосов
/ 12 декабря 2011

Предполагается, что вы говорите только о минимально поддерживаемых 32-разрядных версиях Windows для настольных ПК и о поддержке клиентов от Microsoft.

  • VC11 (y 2012): Windows Vista (y 2007)
  • VC10 (y2010): Windows XP SP3 (y 2008/2001)
  • Windows SDK 6.1: Windows XP (y 2001)
  • VS2008 (y 2007): Windows 2000 SP4 (y 2003),Последнее обновление безопасности прекратило поддержку Windows 2000.
  • Обновление Windows SDK для Windows Vista: Windows 2000 (y 2000)
  • VS2005 (y 2005): Windows 98 (y 1998), Windows 2000 ServiceПакет 3, Windows XP, Windows NT 3 (1993 г.).SP1 потерял 9x поддержку.Последнее обновление безопасности прекратило поддержку Windows 2000.
  • VC6 (1998 г.): Windows 95 (1995 г.), Windows NT ??
    • Компилятор можно обновить с помощью Visual C ++ Toolkit 2003
    • Платформа SDK может быть обновлена ​​до версии Windows 2003 SDK для Windows 2003.

Поддержка 64-битных ОС варьируется, но хорошим показателем является то, поддерживается ли целевая ОС на момент выпуска.Первая стабильная версия SDK с поддержкой 64-битной версии - VC2005.

Взломы (могут вызвать дополнительные проблемы в будущем)

  • Исправление исполняемого файла
    • Компилятор Visual C ++:Имеются ключи / SUBSYSTEM и / OSVERSION, значения которых по умолчанию меняются со временем, но вы можете легко изменить значение с помощью переключателя компилятора или с помощью шестнадцатеричного редактора, если вы знаете формат PE.
    • Измените исполняемый файл , чтобы удалить новые вызовы API, если вы уверены, что код, который вызывает новый API, не будет затронут в вашей программе.
  • CRT / MFC / ATL
2 голосов
/ 14 сентября 2012

Microsoft объявила, что поддержка создания приложений C ++ для Windows XP будет включена в Visual Studio 2012, что делает 2012 год сопоставимым с предыдущим выпуском Visual Studio в этом отношении.

http://blogs.msdn.com/b/vcblog/archive/2012/06/15/10320645.aspx

...