2009-10-04 2 views
3

관리되는 C++ 프로젝트에서 "관리되는 증분 빌드"가 설정되어 있습니다. C#으로 작성된 DLL이 있고 솔루션에 C++ 및 C# 프로젝트가 모두 포함되어 있습니다. 프로젝트간에 종속성을 정의하지는 않았지만 C# DLL은 C++ 프로젝트에서 참조합니다.Visual Studio 2008 관리되는 증분 빌드가 작동하지 않습니다.

문제는 C# 프로젝트가 다시 빌드 될 때마다 C++ 프로젝트가 전체 다시 빌드를 수행한다는 것입니다. 이 경우 다음과 같은 오류 메시지가 나타납니다.

c : \ MyProj \ MyCScode.dll을 검사 할 수 없습니다. 중요한 변화가 있다고 가정합니다.

VM에서 Windows 7을 실행 중입니다 (타이밍 문제 일 수 있습니까?).

답변

1

약간의 연구 끝에 내 동료가 Visual Studio 2008 SP1에서 확인 된 버그이며 사용할 수있는 핫픽스가없고 SP1을 제거하면 문제가 해결된다는 것을 알 수 있습니다. 나는 그 정보를 뒷받침 할 어떤 링크도 없다.

우리의 솔루션은 C# 프로젝트에서 C# 구현 파일을 이동하고 사용자 지정 빌드 단계 (csc.exe에/target : module 매개 변수 사용)를 사용하여 컴파일하고 C++에 개체 파일을 포함시키는 것입니다 다음과 같이 우리의 관리 C 번호 유형을 참조하는 소스 파일 :

주의 사항
#using "MyCScode.obj" 

:

.OBJ 확장을 사용해야 netmodule는,이 방법 Visual Studio에서 버그 것 같다

가 입력이 일 무슨 결정 링커에 사용됩니다 (보통 .netmodule이라고 부릅니다).

C# 파일이 업데이트 될 때마다 #using을 사용하는 모든 C++ 소스 파일을 완전히 다시 빌드 할 수 있습니다. 그러나 전체 프로젝트를 완전히 재구성하는 것보다 낫습니다. | 내가 명시 적으로 "C/C++에서"참조 # 사용 해결 "을 $ (OUTDIR)를 추가

:

+0

http://connect.microsoft.com/VisualStudio/feedback/details/511633/vs2008-sp1-always-rebuilds-c-cli-project-that-references-another-c-project-even-for-minor -c-changes # –

1

는 내가 해결 방법을 찾을 수 있다고 생각 C++/CLI 프로젝트의 "일반"옵션 페이지. 이 후 "조사 할 수 없습니다 ... 중요한 변화가 있다고 가정하십시오." 어셈블리 내부 변경 및 관리되는 증분 빌드의 경우 예상대로 메시지가 나타나지 않습니다.

관련 문제