8

Chỉnh sửa ghi chú: Sau khi có một số lượng lớn thông tin phản hồi xấu mà MS nhận được từ khách hàng của họ về việc thả-XP-stunt, họ have announced rằng một bản vá sẽ được phát hành cho phép xây dựng các tệp thi hành cho XP. Vì vậy, cơ sở cho Q này là không lonher thực sự ở đó, nhưng tôi nghĩ rằng nó thu thập một số infos rất thú vị.Sự hỗ trợ giảm cho Windows XP trong VS11 có thể so sánh với các phiên bản Visual Studio trước không?


Như thành lập ở đây: What is special about the executables compiled with Visual Studio 11 which results in that the executables cannot be executed on Windows XP?

và Connect này lỗi/vấn đề: https://connect.microsoft.com/VisualStudio/feedback/details/690617, Visual Studio 11 (dự kiến ​​phát hành năm 2012) đang lên kế hoạch để không còn hỗ trợ Windows XP.

Điều đó có nghĩa là bạn không thể tạo bản thực thi C++ gốc có thể được thực thi trên Windows XP. (. Một lý do được rằng CRT mới sẽ sử dụng Windows API cuộc gọi mà chỉ có sẵn trên Windows Vista và cao hơn)

Trong one answer, Anders viết:

Họ dường như thả hỗ trợ cho các hệ thống cũ trong mỗi phiên bản mới của VS (NT4,2000, XP) ...

gì tôi quan tâm hiện nay là liệu động thái này của Microsoft ngừng hỗ trợ Windows XP hoàn toàn từ VS11 C++ có thể thực được so sánh với phiên bản trước.

Ý của tôi là, khi nào hỗ trợ cho hệ điều hành nào (NT3.5/NT4/2000sp6 // Win95/Win98/...) hoàn toàn bị loại bỏ khỏi Visual C++. (và "phần nào" của Visual C++ - trình biên dịch, CRT, Windows SDK?)

Ví dụ, tôi nghĩ rằng VC6 là phiên bản cuối cùng của VS có thể được sử dụng để tạo các tệp thực thi trên Windows NT4. Tôi cũng có vẻ nhớ rằng sự hỗ trợ giảm cho Win2k có nhiều hơn để làm với Windows SDK bạn đang sử dụng hơn với trình biên dịch thực tế hoặc CRT, nhưng tôi không chắc chắn.

Có tài nguyên nào hiển thị trình biên dịch MS nào trong đó cài đặt có thể tạo mã tương thích cho các phiên bản hệ điều hành nào không? Thời gian của VS11 (năm 2012) không còn hỗ trợ một hệ điều hành được cài đặt rộng rãi (nhưng không còn được bán) có thể so sánh với các bản phát hành trước đó không?


Một điểm thú vị là chúng tôi đang ở giữa ca từ C++ 03 đến C++ 11 và nếu bạn đang mắc kẹt với Windows XP và VC10, bạn bị kẹt với sự hỗ trợ C++ 11 hạn chế (và một phần không chuẩn) mà nó cung cấp.

+4

Tôi nhớ là khá tức giận khi VS 4 xuất hiện bởi vì nếu khách hàng của tôi không di chuyển lên đến W95 họ không thể chạy các ứng dụng tôi đã viết với nó. Tôi đã vượt qua nó mặc dù :-) –

Trả lời

8

Tôi nghĩ rằng nó làm cho tinh thần để so sánh VS ngày phát hành so với khi phiên bản Windows trở nên không được hỗ trợ, chứ không phải là khi phiên bản Windows đã được phát hành.

Khi một hệ điều hành đạt kết thúc hỗ trợ mở rộng nó dừng lại nhận được cập nhật bảo mật và bất cứ ai vẫn chạy nó có thể được coi điên và bỏ qua (ngoài trường hợp rất đặc biệt). Trước đó, có vẻ như hợp pháp (mặc dù đôi khi gây phiền nhiễu) để mọi người vẫn sử dụng các phiên bản hệ điều hành cũ và mong đợi phần mềm hỗ trợ họ (mặc dù các nhà cung cấp, cả bên thứ ba và Microsoft) đều có thể chọn không, dĩ nhiên).

Từ Wikipedia, đây là khi mỗi phiên bản của Windows đã trở thành (hoặc sẽ trở thành) không được hỗ trợ bởi Microsoft:

  • Tháng 1 năm 2020: Windows 7
  • tháng 4 năm 2017: Windows Vista
  • tháng 4 năm 2014: Windows XP
  • tháng 7 năm 2010: Windows 2000
  • tháng 7 năm 2006: Windows ME
  • tháng 7 năm 2006: Windows 98
  • tháng 6 năm 2004: Windows NT 4
  • tháng 12 năm 2001: Windows 95
  • tháng 12 năm 2001: Windows NT 3

Ràng buộc rằng các chi tiết trong câu trả lời có sẵn:

  • VS vào năm 2012 đã giảm Windows XP mặc dù nó được hỗ trợ cho đến năm 2014.
  • VS trong năm 2010 đã giảm Windows 2000 sắp hết hạn sau đó.
  • VS năm 2007 giảm Win98/ME cả hai đã hết hạn.
  • VS năm 2005 đã bỏ Win95 và NT4 cả hai đều đã hết hạn.

Vì vậy, có vẻ như VS2012 là phiên bản đầu tiên sẽ giảm hỗ trợ cho một hệ điều hành mà chính nó vẫn sẽ được hỗ trợ trong ít nhất một năm nữa. Giả sử tất cả những ngày này là chính xác (tôi đã không kiểm tra lại chúng, đã làm điều này chủ yếu cho sự tò mò của riêng tôi).

+1

[Trang MS này] (http://support.microsoft.com/gp/lifeselectwin) liệt kê các liên kết đến tất cả các ngày hỗ trợ của Windows (và một số). Đối với những cái tôi đã kiểm tra, [wikipedia] (http://en.wikipedia.org/wiki/Windows#History) và danh sách của bạn có vẻ đúng. –

+0

2005 cũng giảm NT4 - xem http://social.msdn.microsoft.com/forums/en-US/vcgeneral/thread/2435c3ab-f732-467e-8224-5f4e3f12c10b/ –

+0

Cũng là một bản tóm tắt tốt trong nhận xét về VC++ bài đăng trên blog: http://blogs.msdn.com/b/vcblog/archive/2012/04/18/10295093.aspx#10295293 –

4

Giả sử bạn chỉ đang nói về các phiên bản Windows 32 bit được hỗ trợ tối thiểu được hỗ trợ và hỗ trợ khách hàng từ 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). Bản cập nhật bảo mật mới nhất đã giảm hỗ trợ Windows 2000.
  • Cập nhật Windows SDK cho Windows Vista: Windows 2000 (y 2000)
  • VS2005 (y 2005): Windows 98 (y 1998), Windows 2000 Service Pack 3, Windows XP, Windows NT 3 (y 1993). SP1 đã giảm hỗ trợ 9x. Bản cập nhật bảo mật mới nhất đã giảm hỗ trợ Windows 2000.
  • VC6 (y 1998): Windows 95 (y 1995), Windows NT ??
    • Trình biên dịch có thể được nâng cấp thông qua Visual C++ Toolkit 2003
    • SDK nền tảng có thể được nâng cấp, lên phiên bản 2003 của Windows 2003 SDK.

Hỗ trợ cho hệ điều hành 64bit khác nhau nhưng một chỉ số tốt là liệu hệ điều hành mục tiêu vẫn được hỗ trợ tại thời điểm phát hành. Phiên bản ổn định đầu tiên của SDK với hỗ trợ 64bit là VC2005.

Hacks (có thể gây ra vấn đề hơn xuống đường)

  • Patch thực thi
    • Visual C++ biên dịch: Có một/SUBSYSTEM và một switch/OSVERSION có sự thay đổi giá trị mặc định theo thời gian nhưng bạn có thể dễ dàng sửa đổi giá trị thông qua trình chuyển đổi trình biên dịch hoặc sử dụng trình chỉnh sửa hex nếu bạn biết định dạng PE.
    • Modify the executable để loại bỏ các cuộc gọi API mới nếu bạn tự tin rằng mã mà các cuộc gọi API mới sẽ không được xúc động trong chương trình của bạn.
  • CRT/MFC/ATL
    • Make a private build sử dụng different build options, hoặc biên dịch lại các phiên bản cũ nếu bạn có mã nguồn và không thể loại bỏ các cuộc gọi API mới từ phiên bản mới.
    • Đánh lừa mối liên kết để liên kết chống lại thực hiện riêng của bạn về chức năng khuôn khổ. Đây là used to reduce the size of MFC apps, nhưng điều này cũng có thể làm giảm các phụ thuộc như GDI + trong suốt quá trình.
2

Microsoft đã thông báo rằng việc hỗ trợ xây dựng các ứng dụng C++ được nhắm mục tiêu tại Windows XP sẽ được bao gồm trong Visual Studio 2012, vì vậy điều đó làm cho năm 2012 có thể so sánh với phiên bản trước của Visual Studio.

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

+0

cảm ơn cho bản cập nhật này. Tôi đoán tôi sẽ phải cập nhật câu hỏi cho phù hợp –