왜 회사에서 여전히 이전 버전의 Visual Studio를 사용합니까?


9

C ++이 사용되는 이유를 이해합니다. 그것은이 질문에 관한 것이 아닙니다.

게임을 설치할 때 일반적으로 Steam (현재는 Steam 만 사용합니다)은 C ++ 2005 Runtime을 배포 할 수 있습니다.

내 질문은 왜 이런 경우입니까? 8 년 전에 출시 된 런타임이 여전히 널리 사용되는 이유는 무엇입니까? 내가 최근에 설치 한 게임 중 일부는 약간 오래되었으므로 몇 년 동안 시간을 ​​보낸다고 가정하면 당시에 시도되고 테스트 된 표준이었습니다.

게임 회사에서 최신 버전의 VC ++ 런타임을 사용하지 않는 이유는 무엇입니까?


1
이것은 답을 찾는 데 문제가되지 않습니다. 왜 그것이 "바람직하다"고 가정합니까?
Tetrad

귀하의 질문은 "왜 회사가 여전히 이전 버전의 Visual Studio를 사용합니까?"라고 생각합니다. 재배포 가능 패키지가 실제로 무엇인지 보려면 여기참조하십시오 .
bobobobo

답변:


20

회사는 VS willy-nilly를 업그레이드하지 않습니다. 예를 들어, 몇 년 동안 배송하지 않을 프로젝트에서 2010SP1을 사용하고 있습니다. 최신 버전을 사용한다는 것은 IDE에 새로운 라이센스를 구매하고, 우리가 사용하는 플러그인에 새로운 라이센스를 구매할 가능성이 있으며, 아직 해결되지 않은 일부 중단 버그를 위험에 빠뜨릴 수 있음을 의미합니다. 우리는 이미 2010 년에 비용을 지불했으며 2010 년은 우리의 요구에 부합 할 것임을 알고 있습니다.

나는 때때로 나를 귀찮게한다. 저는 최신 C ++ 11 / 14 지원, AMP 지원 및 개선 된 최적화를 원하지만 이러한 "새롭고 빛나는"업그레이드 정신 은 더 크고 심각한 프로젝트와 잘 맞지 않습니다.

대부분의 회사 엔터티는 Visual Studio, Office, Windows, Perforce 등 모든 소프트웨어를 업데이트하는 데 매우 보수적입니다. 오늘날 게임에서는 Visual Studio 2005 사용이 매우 드물지만 2008 년은 여전히 ​​흔합니다. 2012 년을 사용하는 사람은 거의 없습니다. 2012 년의 흡수가 한 번에 일어나지 않을 것이므로 Visual Studio의 다음 인기 버전은 2013 년 또는 2014 년일 것입니다.

예를 들어 Redhat Enterprise 또는 Ubuntu LTS의 릴리스 케이던스에 비해 일반적인 매니아 지향 Linux 배포판이 얼마나 빨리 버전을 업데이트하는지 확인하십시오. 개인 사용자와 취미 사용자는 업그레이드와 애호가가 종종 그에 대한 요구를 더 쉽게 정당화 할 수 있지만 일반적으로 비즈니스는 가능한 한 적은 변화를 원합니다.

오늘날의 또 다른 요소는 XBox 360 호환성입니다. 특히 XBox 호환성을 위해 하나가 필요한 경우 두 가지 버전의 IDE / 컴파일러를 구입하여 설치하는 것은 어리석은 일입니다. 게임에 인기있는 다음 버전의 VS는 XBox One이 개발 키트의 릴리스 버전에 대해 권장하는 컴파일러에 따라 크게 달라집니다 (2012는 출시 게임에 사용되는 베타 개발자 키트에 사용되지만 2013 년 이후에는 권장됩니다). 출시 제목).

컴파일러에서 사용하는 런타임과 관련하여 사용중인 컴파일러와 정확히 일치해야합니다. 이것의 일부는 C와 C ++의 작동 방식 때문입니다. 인터페이스는 헤더 파일로 정의되며, 잘라 내기 및 붙여 넣기를 수행하는 멋진 방법입니다. 전시회 A를 고려하십시오.

void foo(char* name, int length);

이제 전시회 B를 고려하십시오.

void foo(int length, char* name);

이러한 C 함수가 두 개의 서로 다른 버전의 런타임에 포함되어 있으면 둘 다 기호 _foo이지만 하나를 사용하도록 컴파일 된 코드는 다른 하나에서는 분명히 작동하지 않습니다. 호환성 문제는 일반적으로 조금 더 복잡하고 미묘하지만 최종 결과는 여전히 동일합니다. VS2005로 컴파일 된 코드에는 VS2005 런타임의 작동 방식 만 설명하는 VS2005의 헤더가 있습니다. VS2012에는 완전히 다른 런타임을 대상으로하는 완전히 다른 헤더가 제공됩니다.

Microsoft는 이전 버전을 대상으로하는 것을 지원하지 않습니다. 그들은 런타임과 함께 기존 헤더를 계속 제공하고 계속 유지해야했습니다. Windows의 우수한 DLL 사용 사례를 통해 개발자가 다른 런타임을 사용하여 라이브러리를 혼합 할 수 있기 때문에 상대적으로 그럴만한 이유가 거의 없습니다. VS2012가있는 경우 라이브러리와 몇 가지 쉬운 규칙을 따르는 한 VS2005로 만든 라이브러리와 계속 연결할 수 있습니다.

GNU / Linux와 같은 플랫폼은 이러한 문제를 피하기 위해 약간의 노력을 기울이지 만 때로는 더 심도있게 진행되었습니다. 나는 여전히 libc5에서 glibc 로의 전환 또는 빈번한 libstdc ++ 휴식 시간을 회상합니다 (이는 Linux / UNIX 개발자가 수년 동안 C ++ 주제에 대해 상대적으로 냉담한 이유 중 하나입니다).

Windows에는라는 하위 수준의 "일반"C 런타임이 포함 MSVCR.DLL되어 있지만 각 버전의 컴파일러에는 자체 교체 (예 :)가 포함되어 있습니다 MSVCRR110.DLL. 일반 버전 만 사용하려고 노력할 수는 있지만 각 버전의 Visual Studio (및 계속해서 변화하는 C ++ 지원)로 변경되는 대부분의 C ++ 지원 루틴을 포함하여 많은 기능이 누락되었습니다. 실제로 무 종속 응용 프로그램 (복구 도구, OS 도구, 보안 도구 등)을 만들려고하지 않는 한 일반적으로 노력할 가치가없고 기능을 잃어 버리지 않습니다.

즉, 각 Visual Studio에는 자체 런타임 라이브러리가 있으며 해당 버전으로 컴파일 된 응용 프로그램을 사용해야합니다. 게임은 일반적으로 가장 최신의 컴파일러보다 적게 사용되므로 오래된 런타임이 필요합니다.


몇 가지 추가 이유 : 최신 컴파일러는 이전 플랫폼과의 호환성을 손상 시킵니다 (예 : 사전 업데이트 1 VS2012는 XP를 지원하지 않음 ). 오래된 컴파일러는 버그를 잘 이해하고 있지만 새로운 컴파일러는 알 수없는 버그를 가지고 있습니다 (컴파일러가 버그가없는 것을
망각하고 있다면

1

내가 아는 한 Visual Studio 2008은 Windows Mobile 및 Windows CE 응용 프로그램을 빌드 할 수있는 마지막 버전입니다.

CE 장치에서 실행되는 앱을 지원해야 VS2008이 여전히 사용됩니다.

내 Windows 데스크톱 앱의 경우 라이센스를 소유 한 것보다 간단한 이유로 VS2010 Pro를 사용합니다. 효과가있다. 나는 그것을 좋아한다. 그리고 실제로 내 앱이 더 나아지지 않는 최신 버전을 위해 더 많은 돈을 버는 이유를 모르겠습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.