2011-02-05 4 views
6

제 신청서에는 Console#WriteLine 또는 Console#Write calls이 많이 있습니다. 이것은 너무 많아서 응용 프로그램이 필요한 것보다 실제로 느립니다.모든 콘솔 # WriteLine 호출을 비활성화하거나 제거 하시겠습니까?

그래서 모든 Console # WriteLine 및 Console#Write 호출을 제거하거나 적어도 비활성화하는 쉬운 방법을 찾고 있습니다.

가장 쉬운 방법은 무엇입니까?

+1

(http://msdn.microsoft.com/en-us/library/4y6tbswk.aspx) 또는를 사용 [ConditionalAttribute] (http://weblogs.asp.net/tgraham/archive/2004/03/12/88682.aspx) 및 사용자 자신의 디버그 인쇄 방법. –

+0

나는 이미 그 일을하고 있지만, 프로젝트를 시작할 때 나는 그것을하지 않았다. –

+1

응용 프로그램의 Console.WriteLine에 대한 #IF 디버깅은 나에게 나쁜 생각처럼 들리지만 ... 런타임시 레벨을 조정할 수있는 로깅 엔진 사용 –

답변

4

아마도 & 코드 편집기에서 함수 바꾸기를 찾으십니까? 다음 시작하는 System.Diagnostics.Debug.Print()을 사용 했어야 예를 들어 모든

Console.WriteLine 

을 찾아 그들이 중요하지 않은 (로그) 인 경우

//Console.WriteLine 
+0

나는 그것에 대해 생각했지만 문제는 정규식이나 그와 비슷한 것을 가지게된다는 것입니다. – RoflcoptrException

+0

그리고 나서 코드에 공백이 많이 생겼습니다. 왜냐하면 그 전화를 ""또는 이와 비슷한 것으로 바꾸어야하기 때문입니다. – RoflcoptrException

+1

아마 내가 쓴 것이 충분할까요? –

3

로 교체합니다.

다행히 WriteLine()Debug.Print()과 호환되므로 S & R을 쉽게 수정할 수 있습니다. 아마도 몇 가지 사용법을 고칠 수 있습니다.

대체하면 Console.Write()이 약간 번쩍 일 수 있습니다.

완료하려면 : 프로젝트 | 속성의 확인란을 사용하여 Debug.Print() 문을 켜고 끌 수 있습니다.

1

간단하지만 정규식이 아닌 찾기/바꾸기 대화 상자를 사용하고 Console.WriteLine(을 모두 Debug.WriteLine(으로 바꿉니다.

이전에 콘솔 창에 직접 출력 된 내용을 추적하여 릴리스 모드에서 성능을 최적화 할 수 있습니다.

+0

Debug.WriteLine 같은 매개 변수를 처리하지 않습니다 호출해야합니다. –

+0

@Henk Holterman : 네 말이 맞아. 나는 내 대답을 간직하고있다. (이 정확한 경우 매개 변수가 매번 단일 문자열처럼 매우 기본 적이라면 유용 할 수있다.) 그러나 나는 당신의 대답을 +1한다. –

1

Visual Studio에서 Tools|Macros|Record temporary macro 옵션을 사용하면 "Console.Write"의 찾기를 수행하는 매크로를 기록하고 해당 줄을 삭제할 수 있습니다. 즉,

"Console.Write"를 찾으려면 을 찾은 다음 해당 줄을 삭제하십시오.

매크로를 저장하고 문제가있는 줄이있는 프로젝트의 모든 파일에 대해 실행하십시오.

약 2 분 정도 소요됩니다.

그러나 소스를 먼저 백업 해 두는 것이 좋습니다. 단지를 위해서.

19

구현 한 빠른 수정 방법은 다음과 같습니다.

... 
static int Main(String[] args) 
{ 
... 
#if !DEBUG 
    Console.SetOut(TextWriter.Null); 
    Console.SetError(TextWriter.Null); 
#endif 
... 
} 

당신이 [`#IF DEBUG`]를 사용 할 수 있습니다 향후 HTH

관련 문제