2014-10-20 4 views
2

업데이트가없는 Visual Studio 2013을 사용하여 빌드 된 제품이 있습니다. 빌드 머신을 Visual Studio 2013 Update 3으로 업데이트하고 싶습니다.Visual Studio C++ 재배포 가능 호환성

제품 바이너리의 하위 세트가 포함 된 제품에 대한 패치 및 핫픽스를 출시합니다. 빌드 머신을 업데이트하고이를 사용하여 패치를 생성하면 어떻게 될지 걱정됩니다. 우리 제품의 패치 된 설치에는 다른 버전의 컴파일러로 빌드되고 다른 버전의 Visual Studio C++ 재배포 가능 파일에 대해 빌드 된 dll과 exe가 혼합되어 있습니다.

재배포 가능 패키지의 2013 업데이트 3 버전을 패치로 재배포해야합니까?

redistrubutables의 다른 업데이트 버전이 호환되며이 시나리오가 지원됩니까?

+1

IIRC VS2013 C++ 런타임에는 하나의 세트 (x86, x64 및 ARM) 만 있습니다. 런타임 구성 요소에 대한 업데이트가 있다는 것을 알지 못합니다. VS2013 및 VS2013.3 C++ 런타임 각각에 대한 링크가 있습니까? – Niall

+0

@ Niall - 정확할 수도 있습니다. 단 하나의 버전 일 수도 있습니다! 나는 Visual Studio 2012를 위해 다른 업데이트를위한 다른 런타임 버전이 있다는 것을 알고있었습니다. 어쨌든 업데이트 4는 적어도 그렇게 생각했기 때문에 아마도 2013에 대해서도 마찬가지라고 생각했습니다. –

답변

1

비누 상자

다른 버전으로 구축 DLL 및 예전 친구의 혼합을 포함하는 것이 우리의 제품의 패치 설치 ...

그리고 거기 당신은 이미 문제가있다 : 우리의 정책 항상 패치 모두입니다. 배포되는 (우리의) C++ 바이너리 세트는 완전히 독립적입니다. C++ 바이너리 세트의 부분 업데이트를하지 않습니다. VC 런타임 문제와 별도로 무언가가 깨질 가능성이 너무 큽니다.

(당신이 C의 DLL의 API 뒤에 "방화벽"하는 모듈이있는 경우 물론, 그것은 뭔가 다른입니다.) 질문

나는 마이크로 소프트 C를 이해하는 방법에 관해서는

(++) 2010 년 이후의 런타임 라이브러리는 모두 "System32"에 설치되고 주요 버전별로 버전이 변경되므로 은 일반적으로입니다. 하나의 Windows 시스템에는 하나의 VS2013 Redist 세트 만 설치되며 기본 설정을 사용하는 모든 응용 프로그램에 사용할 수 있습니다 (즉, 매니페스트 및 WinSxS 포함).

즉, 모든 VS2013 재배포 가능 라이브러리는 완전 전달 및 역방향 ABI 호환이어야하므로 일반적으로 빌드 서버에 고객 시스템과 다른 "재발행"버전이 없는지 여부는 중요하지 않습니다. 모든 모듈이 DLL VCruntime 버전을 사용하는 한 언제든지 모든 프로세스에로드 할 수있는 모듈 만 있으므로 모든 모듈은 호환되어야하는 모듈을 볼 수 있습니다.

그래도 나는 고객 시스템에서만 나타낼 수있는 이전 버전으로 인한 잠재적 인 버그를 배제하기 위해 (최신) VCRedist를 패치에 포함시키는 것이 유리할 것이라고 생각합니다.

VCRedist가 공유되는 방식으로, 사용자 (또는 다른 사람)는 부 버전에 대해 많은 것을 보장하지 않으므로 클라이언트 컴퓨터가 최소한 사용중인 버전을 실행하도록 할 수 있습니다.

관련 문제