บริษัท ต่าง ๆ ไม่อัพเกรด VS โดยจำใจ เราใช้ 2010SP1 เป็นตัวอย่างในโครงการที่ไม่ได้วางแผนที่จะจัดส่งเป็นเวลาหลายปี การใช้เวอร์ชันที่ใหม่กว่านั้นหมายถึงการซื้อใบอนุญาตใหม่ให้กับ IDE ความเป็นไปได้ในการซื้อใบอนุญาตใหม่สำหรับปลั๊กอินที่เราใช้ เราจ่ายเงินไปแล้วสำหรับปี 2010 และรู้ว่า 2010 จะทำงานได้ตามความต้องการของเรา
ฉันยอมรับว่ามันทำให้ฉันรำคาญเวลา; ฉันต้องการการสนับสนุน C ++ 11/14 ใหม่ล่าสุดการสนับสนุน AMP และการเพิ่มประสิทธิภาพที่ปรับปรุง แต่ความคิดแบบ"อัพเกรดเป็นเงาใหม่"นั้นไม่สอดคล้องกับโครงการขนาดใหญ่และจริงจังมากขึ้น
องค์กรส่วนใหญ่มีความระมัดระวังในการอัพเดทซอฟต์แวร์ใด ๆ ไม่ว่าจะเป็น Visual Studio, Office, Windows, Perforce หรืออะไรก็ตาม ในขณะที่การใช้งาน Visual Studio 2005 ค่อนข้างหายากสำหรับเกมวันนี้ 2008 ยังคงเป็นเรื่องปกติ มีน้อยมากที่กำลังใช้งานปี 2012 เป็นไปได้ค่อนข้างมากที่การรับปี 2012 จะไม่เกิดขึ้นมากมายและ Visual Studio รุ่นยอดนิยมรุ่นต่อไปจะเป็น 2013 หรือ 2014
ดูตัวอย่างว่าลินุกซ์ distro ที่มุ่งเน้นผู้ที่สนใจทั่วไปจะทำการอัพเดตเวอร์ชันอย่างไรเมื่อเทียบกับจังหวะการเปิดตัวของ Redhat Enterprise หรือ Ubuntu LTS ผู้ใช้ตามบ้านและผู้ที่มีความเอนเอียงสามารถปรับการอัพเกรดและผู้ที่ชื่นชอบได้อย่างง่ายดายมักจะโห่ร้องสำหรับพวกเขา แต่โดยทั่วไปธุรกิจต้องการการเปลี่ยนแปลงเล็กน้อยที่สุดเท่าที่จะทำได้
ปัจจัยอื่นในวันนี้คือความเข้ากันได้ของ XBox 360 เป็นเรื่องโง่ที่จะซื้อและติดตั้ง IDE / คอมไพเลอร์สองรุ่นหากคุณต้องการหนึ่งสำหรับ XBox ที่เข้ากันได้ VS รุ่นต่อไปใดที่เป็นที่นิยมสำหรับเกมส่วนใหญ่ขึ้นอยู่กับคอมไพเลอร์ที่ XBox One แนะนำสำหรับรุ่นที่วางจำหน่ายของ devkits (2012 ใช้สำหรับ devkits รุ่นเบต้าที่ใช้สำหรับเกมเปิดตัว เปิดตัวชื่อเรื่อง)
ในแง่ของ runtimes ที่คอมไพเลอร์ใช้ต้องตรงกับคอมไพเลอร์ที่ใช้งานอยู่ ส่วนหนึ่งเป็นเพราะการทำงานของ C และ C ++ อินเทอร์เฟซถูกกำหนดโดยไฟล์ส่วนหัวซึ่งเป็นเพียงวิธีแฟนซีในการทำ cut-n-paste พิจารณาการจัดแสดง A:
void foo(char* name, int length);
และตอนนี้ให้พิจารณาการจัดแสดง B:
void foo(int length, char* name);
หากฟังก์ชั่น C เหล่านี้รวมอยู่ใน runtimes ที่ต่างกันสองเวอร์ชั่นพวกเขาทั้งคู่จะเป็นสัญลักษณ์ _foo
แต่โค้ดที่คอมไพล์แล้วเพื่อใช้อันใดอันหนึ่งจะไม่ทำงานกับอีกอันอย่างชัดเจน ในขณะที่ปัญหาความเข้ากันได้โดยทั่วไปจะมีความเกี่ยวข้องและลึกซึ้งขึ้นเล็กน้อยผลลัพธ์ที่ได้ยังคงเหมือนเดิม: โค้ดที่คอมไพล์ด้วย VS2005 จะมีส่วนหัวจาก VS2005 ซึ่งอธิบายการทำงานของ VS2005 รันไทม์เท่านั้น VS2012 มาพร้อมกับส่วนหัวที่แตกต่างกันอย่างสิ้นเชิงโดยกำหนดเป้าหมายรันไทม์ที่แตกต่างกันอย่างสิ้นเชิง
Microsoft ไม่สนับสนุนการกำหนดเป้าหมายเวอร์ชั่นเก่าเนื่องจากอาจเป็นเรื่องเจ็บปวด พวกเขาต้องการจัดส่งแล้วดำเนินการบำรุงรักษาส่วนหัวเก่าเพิ่มเติมจาก runtimes มีเหตุผลค่อนข้างน้อยเนื่องจากวิธีปฏิบัติการใช้ DLL ที่ดีใน Windows ช่วยให้นักพัฒนาสามารถผสมไลบรารีโดยใช้ runtimes ที่แตกต่างกัน หากคุณมี VS2012 คุณยังคงสามารถเชื่อมโยงกับไลบรารีที่ทำกับ VS2005 ได้ตราบใดที่คุณและห้องสมุดปฏิบัติตามกฎง่ายๆ
แพลตฟอร์มอย่าง GNU / Linux ต้องผ่านความพยายามบางอย่างเพื่อหลีกเลี่ยงปัญหาเหล่านี้ แต่ผ่านบางครั้งในระดับที่ลึกกว่ามาก ฉันยังคงจำ libc5 เป็นการเปลี่ยน glibc หรือการหยุด libstdc ++ บ่อยครั้ง (นี่คือเหตุผลหนึ่งที่นักพัฒนา Linux / UNIX ยังคงค่อนข้างเย็นในหัวข้อของ C ++ ในช่วงหลายปีที่ผ่านมา)
Windows จัดส่งด้วยรันไทม์ C "ระดับทั่วไป" ในระดับต่ำที่เรียกว่าMSVCR.DLL
แม้ว่าคอมไพเลอร์แต่ละเวอร์ชันจะมีการแทนที่ของตัวเองเช่นMSVCRR110.DLL
แม้ว่ารุ่นของคอมไพเลอร์แต่ละรวมเช่นการเปลี่ยนของตัวเองคุณสามารถใช้ความพยายามเฉพาะรุ่นทั่วไป แต่ไม่มีฟังก์ชันการทำงานมากมายรวมถึงส่วนสนับสนุน C ++ ส่วนใหญ่ที่เปลี่ยนแปลงกับ Visual Studio แต่ละเวอร์ชัน (และการสนับสนุนที่พัฒนาอย่างต่อเนื่องของ C ++) โดยทั่วไปแล้วจะไม่คุ้มค่ากับความพยายามและการสูญเสียฟังก์ชันการทำงานเว้นแต่คุณจะพยายามสร้างแอปพลิเคชันแบบไม่ต้องพึ่งพาศูนย์ (เครื่องมือการกู้คืนเครื่องมือระบบปฏิบัติการเครื่องมือรักษาความปลอดภัยและอื่น ๆ บางครั้งก็ตกอยู่ในคลาสนี้)
กล่าวโดยย่อ Visual Studio แต่ละรายการมีไลบรารีรันไทม์ของตัวเองและแอปพลิเคชันที่คอมไพล์ด้วยเวอร์ชันนั้นต้องใช้ โดยทั่วไปแล้วเกมจะเขียนโดยใช้คอมไพเลอร์ที่ทันสมัยที่สุดและจะต้องใช้รันไทม์รุ่นเก่ากว่า