2013-07-31 3 views
0

저는 VS 2010 솔루션에 C++/CLI와 C# 프로젝트가 잘 어울립니다. 추가 개발을 위해 VS 2012로 옮기기로 결정했습니다. 기술적 인 어려움으로 인해 C++/CLI 프로젝트를 업그레이드 할 수 없습니다. 이것은 나를 위해 몇 가지 문제를 만들었습니다. 야간에 devenv 명령을 사용하여 해당 솔루션을 컴파일하는 스크립트를 작성했습니다. 모든 C++/CLI 프로젝트가 컴파일되지 않습니다.VS 2012 프로젝트 변환 문제

IDE가 트리거되면 모든 프로젝트를 즉시 변환하라는 메시지가 표시됩니다. 나는 아무 말도하지 않고 컴파일하고 모든 것이 잘 작동한다.

내 조사 :

은 실제로 무슨 일이 일어나고 있는지 이해하기 위해 다음과 같은 방법을 시도했다. MSBUILD 로그 상세도가 증가되었습니다. 모든 경우에 VS 2012 명령 프롬프트가 사용되었습니다.

사례 1 :

msbuild를 {C++/CLI 프로젝트 이름}/t :

결과를 재 구축

이 프로젝트는 잘 컴파일 및 VS 2010 컴파일러를 사용합니다. 로그에서 다음 줄을 보여줍니다 : "AlwaysCreate"가 지정 되었기 때문에 "64 \ 디버그 \ Swift.Algorithms.unsuccessfulbuild 만들기"

. ClCompile : C : \ 마이크로 소프트 비주얼 스튜디오 \ 프로그램 파일 (86) 10.0 \ VC \ 빈 \ x86_amd64 \ CL.EXE

사례 2 :

devenv를 {C++/CLI 프로젝트 이름}/"{CONFIGURATION}"다시

결과 :

이 프로젝트는 잘 컴파일 및 VS 2010 컴파일러를 사용합니다. 로그에서 다음 줄을 보여줍니다 : 조립 "Microsoft.Build.CppTasks.x64, 버전 = 4.0.0.0, 중립 문화 =, PublicKeyToken = b03f5f7f11d50a3a"에서 "CL"작업을 사용

1>. 1> 작업 "CL"1> 도구에 전달 된 환경 변수 : 1>
VS_UNICODE_OUTPUT = 1512 1>C : \의 Program Files (x86) \의 Microsoft Visual 스튜디오 10.0 \ VC \ 빈 \ x86_amd64 \ CL.EXE

사례 3 : (나를 좌절 한)

devenv를 {솔루션 파일 이름}/다시 "{CONFIGURATION}는"C ​​++/CLI 프로젝트가 실패

컴파일합니다. C# 프로젝트는 잘 컴파일됩니다. 이 경우 사용되는 C++ 컴파일러는 VS 2012 버전입니다.로그에서 다음 줄을 보여줍니다 :

1> 도구에 전달 된 환경 변수 : 1> VS_UNICODE_OUTPUT = 1016 1> C : \ 프로그램 파일 (86) 마이크로 소프트 비주얼 스튜디오 \ 11.0 \ VC \ BIN \ x86_amd64 \ CL.EXE/C

질문 :

1) 나는 프로젝트 파일을 개별적으로 컴파일에 사용되는 경우 MSBUILD 적절한 도구를 사용할 수있을만큼 영리하다 것을 알 수있다. VS 도구 명령 프롬프트 (VS 2010 또는 VS 2012)가 사용되는 것은 실제로 중요하지 않습니다. 솔루션 파일을 호출 할 때 잘못된 점은 무엇입니까?

2) 내 제품을 컴파일하는 유일한 방법은 솔루션 파일이 문제를 일으키기 때문에 각 프로젝트를 개별적으로 컴파일하는 것입니다. 이것은 알려진 제한 사항입니까?

이 문제에 대한 의견을 보내 주시면 감사하겠습니다.

+2

'msbuild'을 통해'devenv'를 사용하는 어떤 강력한 이유가 있습니까? 플랫폼 도구가 올바르게 설정되어 있습니까? ie VS2010 것 http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-65-69/7725.xptarget.png –

+1

나는 몇몇을 보았다 msbuild 대신 devenv를 사용했을 때 우리 제품의 빌드 순서가 다른 초기시기의 문제. msbuild는 컴파일이 실패하게 만듭니다. devenv가 정상적으로 작동 한 이후로 많은 것을 조사하지 않았습니다. – msiyer

+0

VS2005가 실제로 MSBuild 기반 프로젝트 (????)를 갖고 있지 않았고 MSBuild가 비 MSBuild 프로젝트에서 임시 프로젝트를 만들었 기 때문에 메모리가 나를 지원한다면 그럴 수도 있습니다. http://weblogs.asp.net/kdente/archive/2005/06/05/410432.aspx 나는 그것이 옳은 복잡한 과정 일 것이라고 생각합니다. 그래서 VS2008 +에 있다면 아마도 MSBuild에 다른 시도를 할 시간이 될 것입니까? –

답변

0

나는 최소한, 각각의 비주얼 C++ 프로젝트의 Platform ToolsetVisual Studio 2010로 설정해야합니다 것을 상상하면 (내가 개인적으로 msbuild 선호) msbuild 또는 devenv 건물하든.

Platform Toolset