2017-02-02 1 views
0

개발생산의 두 가지 환경 만 있습니다. 다음 코드를 사용하여 응용 프로그램이 다른 응용 프로그램에서 실행되는지 확인하는 것이 좋습니다. Debugger.IsAttached를 사용하여 환경을 결정하는 것이 맞습니까?

bool IsProduction() 
{ 
    return !Debugger.IsAttached; 
} 

나는 thisthis 읽을 수 있지만 나에게 토론은 다른 방법을했다 보인다.

appSettings 키는 어떻게 사용합니까?

<appSettings> 
    <add key="Environment" value="Dev"/> 
</appSettings> 

누군가가 설정 파일을 편집하면 어떻게됩니까? 코드에 "이중 체크"메커니즘이 있어야합니까? 값을 암호화해야합니까 아니면 너무 많이 사용해야합니까?

시간 내 주셔서 감사합니다.

+0

귀하의 방법은 "디버거가 다음 연결되어있는 경우, 우리는 생산에있다"라고 몇 가지 링크를 제공 할 수있는 설정의 변환 방법에 대한 자세한 정보를 원하는 경우. 프로덕션에서만 디버깅하는 습관에 있고, 개발 중에 있지 않습니까? 나는 당신의 코드에 대해 매우 혼란 스럽다. –

+0

보다 일반적으로 디버거가 연결되었는지 확인하기 위해 * : 단 하나만 *에 대해 "is the debugger attached"메서드를 사용해야합니다. –

+0

@EricLippert 죄송합니다, 놓치 셨습니다! 운영자. – brugnner

답변

2

Debugger.IsAttached은 프로세스가 빌드와 독립적으로 연결된 디버거 (VS에서 실행되거나 외부 디버거가 연결되어 있음)가있는 경우에만 true를 반환합니다.

당신은 당신이이 같은 부울 뭔가를 설정하는 전처리 지시어를 사용할 수있는 빌드 유형에 따라 환경을 diferentiate하려면 다음

Debugger.IsAttached를 사용하는 첫 번째 방법이 작동하지 않을
#if DEBUG 
bool isDebug = true; 
#else 
bool isDebug = false; 
#endif 
+0

이것은 나를위한 최고의 해결책이었다, 고마워! – brugnner

+0

[조건부 ("DEBUG")] 속성 ([MSDN 문서] (https://msdn.microsoft.com/en-us/library/system.diagnostics.conditionalattribute.aspx))을 사용할 수도 있습니다. – Brian

0

실제로 디버거가 프로세스에 연결되어 있지 않으면 개발 중에도 마찬가지입니다.

구성 값은 올바른 접근법이며 유연성 관점에서 내가 아는 최상의 값입니다. 다른 환경을 구성 할 수 있으며 변환 설정 파일을 사용하여 배포 중에 자동으로 업데이트됩니다.

당신은 내가 당신에게

관련 문제