2012-10-13 5 views
2

간단히 말해, CLient 및 Contract dll을 컴파일하기 위해 별도의 WCF Visual Studio 프로젝트가 있습니다. MS-BUILD (명령 줄)를 사용하여 프로젝트를 빌드하면 클라이언트 및 계약 DLL을 다른 위치로 복사하는 빌드 후 작업이 생깁니다.임시 위치 인 VisualStudio 프로젝트에서 obj/debug입니까?

이제는 이들 DLL을 obj/Debug 폴더에서 선택하기가 더 쉽습니다 (CLient 및 Contract dll 만 있고 종속성은 없으므로).

그러나 obj/Debug 폴더가 임시라고 들었습니다. 우리는 dll을 얻기 위해 bin/Debug에 의존해야합니다.

bin/debug에서 가져와야하고 obj/Debug가 아닌 이유는 무엇입니까?

답변

3

역할 \ 디버그 MSBuild에서의 문서화되지 않은 구현 세부입니다 있습니다. MSBuild는 프로젝트 설정에 따라 조건부로 파일을 복사하기 때문에 존재합니다. 정확한 규칙은 다소 복잡하므로 프레임 워크 디렉토리의 .targets 파일을 연구하여 통찰력을 얻을 수 있습니다. 그 자체로 당신이 목표로하는 .NET 버전에 크게 의존합니다.

실제로 무엇이 진드기인지 알고 싶다면 을 수행하십시오. obj \ Debug에서 파일을 복사하고 팬에 맞는 것을보십시오. 빌드가 실패하거나 잘못된 파일을 생성 할 때 FUD의 캐스트가 영원히 남을 수 있도록 프로젝트를 생성 한 후 오랜 시간이 걸릴 수 있음을 유의하십시오. 그것이 매우 생산적이라고 들리지 않는다면, 보증을 깨고 프로젝트의 출력 디렉토리에서 복사하는 것을 피하십시오. bin \ Debug와 bin \ Release가 있습니다. 인 경우 문제가 발생하는 경우 최소한 그렇게 질문 할 수 있습니다.

+0

한스에 대한 자세한 내용을 보내 주셔서 감사합니다. –

2

예. 당신은, bin/Debug, 또는 더 구체적으로 MSBuild를 컨텍스트에서 변수 OutputPath에서 바이너리를 데리러되어 OBJ의

http://msdn.microsoft.com/en-us/library/bb629394.aspx

+0

왜 obj/Debug가 아닌가요? –

+0

Microsoft에서 내일 obj/Debug를 사용하지 않기로 결정하면 어떻게 될까요? 오직'OutputPath'만이 문서에 따라 당신과 마이크로 소프트 간의 신뢰할 수있는 계약입니다. –

+0

그런 경우에는 bin/Debug를 사용해서는 안됩니다. 맞습니까? –