2010-04-20 2 views
0

VC++ 프로젝트 (C# 프로젝트 포함)가 포함 된 응용 프로그램이 있습니다. 이전에 빌드가 완료되었을 때 (지난 1 년 정도) Visual Studio 2005는 VC++ 런타임 버전 8.0.50727.762를 대상으로하는 것으로 보입니다. 적어도, 그것은 Assembly.dll.intermediate.manifest 파일이 나에게 말하고있는 것이다 :Visual Studio 2005 대상 VC++ 런타임 버전을 설정하는 방법

<?xml version='1.0' encoding='UTF-8' standalone='yes'?> 
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> 
    <dependency> 
    <dependentAssembly> 
     <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50727.762' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' /> 
    </dependentAssembly> 
    </dependency> 
</assembly> 

이 버전 번호는 비주얼 스튜디오 2005 버전 번호와 일치합니다. 응용 프로그램은 웹 서버에 배포 할 때 잘 작동했습니다. 태양이 비치고 있었고, 새들이 노래를 불렀고 모든 것이 세상과 옳았습니다.

이제 변경된 사항이 있습니다. 나는 보안 패치, 모호한 Visual Studio 설정 등을 모릅니다. 이제 비주얼 스튜디오 2005는 VC++ 런타임의 잘못된 버전을 대상으로 할 것 같다

<?xml version='1.0' encoding='UTF-8' standalone='yes'?> 
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> 
    <dependency> 
    <dependentAssembly> 
     <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50727.4053' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' /> 
    </dependentAssembly> 
    </dependency> 
</assembly> 

나는 웹 서버에 응용 프로그램을 배포 할 때, 나는이 응용 프로그램은 응용 프로그램 구성이 올바르지 않기 때문에 시작하지 못했습니다 지칠대로 지친 를 얻을. 응용 프로그램을 다시 설치하면이 문제가 해결 될 수 있습니다. (HRESULT 예외 : 0x800736B1) 오류가 발생했습니다.

이 문제는 이전 버전의 응용 프로그램을 다시 컴파일 할 때도 발생합니다. 은 전혀 변하지 않았습니다.은 솔루션에서 변경되었습니다. 빌드 프로세스의 일부로 솔루션의 전체 내용을 압축하여 보관합니다. 임시 디렉터리에 여러 개의 파일의 압축을 푼 다음 이전 매니페스트 파일이 8.0.50727.762를 참조하고 명령 줄에서 정확히 동일한 명령을 사용하여 다시 컴파일 한 다음 새 매니페스트 파일이 이제 8.0.50727.4053을 참조하는지 확인했습니다.

Microsoft Visual Studio 2005 버전 8.0.50727.762 (SP.050727-7600) 및 Microsoft Visual C++ 2005 77646-008-0000007-41610을 사용하고 있습니다.

Visual Studio가 VC++ 런타임의 이전 버전으로 되돌아가는 이유는 무엇입니까? 사용할 버전을 어떻게 지정합니까? 여기서 뭐가 잘못 됐어?

업데이트

OMG - 나는 그런 바보입니다. X.7> X.4, X.762 < X.4053 여기서 X는 버전 번호입니다. 따라서 8.0.50727.4053은 이고 최근은 8.0.50727.762입니다. 모든 것이 이제는 의미가 있습니다. 나는 이것을 내가 세계에서 가장 똑똑한 사람이라고 생각하는 모든 시간 동안 개인적인 알림으로 남겨두고있다. ...

답변

1

아마 당신의 dev 컴퓨터는 VC++ 런타임을 업데이트하는 새로운 서비스 업데이트를 설치했다. 큰 문제는 없습니다. 웹 서버에 필요한 모든 업데이트를 설치하면 모든 것이 다시 복숭아가 될 것입니다.

정말로 되돌릴 필요가있는 경우 런타임 라이브러리를 변경하는 업데이트를 찾아서 제거해야합니다. 2005 년 vs 2005에서 선택한 런타임을 변경할 방법이 없습니다. 발견 된 날짜.

0

_BIND_TO_CURRENT_XXX_VERSION 1 (XXX은 CRT/MFC/ATL/OPENMP)을 사용하여 VistualStudio RTM의 VCRedist와 최신 버전을 선택하십시오.

http://msdn.microsoft.com/en-us/library/cc664727%28VS.90%29.aspx

PS : 많은 확실히 있지만, 각 MFC/ATL 등 _BIND_TO_CURRENT_VCLIBS_VERSION 때문에보다 효율적으로 사용하는 매크로와보고 문제가있다하지 않음

관련 문제