2017-01-03 1 views
4

다른 개발자가 사용할 어셈블리를 만들고 배포하고 있습니다. 디버그가 아닌 내 어셈블리의 릴리스 버전을 배포하고 있습니다. 내 어셈블리의 클래스 중 하나에서 , 그럴 게요 내 디버그는 조건, 코드가 다른 개발자가 자신의 프로젝트에서 내 어셈블리를 참조하는 경우DEBUG vs RELEASE 및 배포 어셈블리

#if DEBUG 
    Console.WriteLine("Debug"); 
#else 
    Console.WriteLine("Release"); 
#endif 

를 사용하여 디버그 모드에서만 실행 및 디버그 모드에서 자신의 프로젝트를 실행하도록 설정해야 실행 여부?

+3

RELEASE 버전의 코드를 배포하는 경우 빌드시 컴파일러가 해당 코드를 제거했기 때문에 불가능합니다. – Steve

+4

컴파일러 문입니다. 그래서 컴파일 타임에 처리됩니다. 따라서 디버그되지 않은 버전은 컴파일 될 때 어셈블리에서 제거됩니다. – Liam

+0

이것은 XY 문제입니다. 'Debugger.IsAttached'를 사용하여 런타임 검사를하십시오. 약간 다른 의미지만, 아마도 이것이 당신이 원하는 것입니까? 확실하게 말할 수는 없지만 그 질문은 불명확합니다. –

답변

10

다른 개발자가 프로젝트에서 내 어셈블리를 참조하고 프로젝트를 디버그 모드로 실행하는 경우 내 디버그 만 조건부 실행 여부를 결정합니다. Console.WriteLine() 인해 전처리 제약에 릴리스 모드로 컴파일하지 않았기 때문에

없음

.

MSDN이에 대해 말하기를 더 있습니다

C# 컴파일러는 #if 지시어를 발견, #endif 지시에 의해 결국 다음을, 그것은 은 지정된 심볼이 정의되어있는 경우 지침 사이의 코드를 컴파일 ... Tell me more...

또한, 그것은 처음부터 존재 결코 조립품에서 제거되는 것처럼 생각하는 올바른 아니에요.

+0

자세한 설명을 가져 주셔서 감사합니다. –

+0

@ G-Man 당신은 아주 좋은 선생님입니다 :) – MickyD