2016-07-13 12 views
0

최근 MFC 기반의 대규모 프로젝트 모음을 Visual Studio 2005/2008에서 Visual Studio 2012 (업데이트 5)로 변환했습니다. 우리 프로젝트는 이전에 리소스로 포함 된 구성 별 매니페스트 파일 세트를 사용하여로드 할 SxS (side-by-side) 어셈블리의 정확한 버전을 지정했습니다.Visual Studio에서 매니페스트 파일을 사용하여 올바른 VS 2012 VC/MFC 런타임 지정

<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.1" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> 

이전에, 나는 C에서 폴더 위의 정체성을 연결할 수 있습니다 : \ WINDOWS \ WinSxS에 예를 들어, 여기에 아래의 VC90 런타임에 대한 우리의 오래된 매니페스트 파일 중 하나에서 미리보기입니다. 올바른 바이너리가 들어있는 폴더 "x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.1_none_e163563597edeada"가 그 예입니다.

폴더 이름에는 assemblyIdentity 노드의 특성을 채우는 데 필요한 모든 정보가 포함되어 있습니다. 불행히도, this (구식) 문서는 Microsoft가 더 이상 VC2010 + SxS 파일을 이러한 방식으로 저장하지 않는다는 사실을 확인시켜줍니다. 최신 Microsoft Visual C++ 2012 재배포 가능 패키지 (설치 프로그램 v11.0.61030.0)와 비교하여 프로젝트를 실행하고 싶습니다. 이 바이너리에 대한 올바른 name/version/publicKeyToken 정보는 어떻게 찾습니까? MSDN 목록 또는 유사한 것을 찾을 수 없습니다.

이 문제를 조사하기 위해 sxstrace.exe/Dependency Walker 등을 사용해 왔습니다. 매니페스트 파일이 실행 파일에 적절하게 임베드되어 있는지 확인할 수 있습니다. 문제는 매니페스트 파일 만 잘못 지정되었습니다.

미리 감사드립니다.

답변

0

this을 살펴보십시오. 기본적으로 응용 프로그램은 Windows SDK 에서처럼 libs에 올바르게 연결됩니다. 그리고 프로젝트가 디폴트 라이브러리로 프로젝트 파일 내에서 정보를 삭제하거나 디폴트 설정으로 프로젝트를 재 작성하도록합니다.