코드를 DEBUG 코드로 표시하면 은 RELEASE 모드에서을 실행하지 않지만 여전히 어셈블리로 컴파일됩니까? 내 어셈블리가 여분의 방법으로 부풀어 오르지 않았는지 확인하고 싶습니다.조건부 디버그 - 아직 RELEASE 코드로 컴파일됩니까?
[Conditional(DEBUG)]
private void DoSomeLocalDebugging()
{
//debugging
}
코드를 DEBUG 코드로 표시하면 은 RELEASE 모드에서을 실행하지 않지만 여전히 어셈블리로 컴파일됩니까? 내 어셈블리가 여분의 방법으로 부풀어 오르지 않았는지 확인하고 싶습니다.조건부 디버그 - 아직 RELEASE 코드로 컴파일됩니까?
[Conditional(DEBUG)]
private void DoSomeLocalDebugging()
{
//debugging
}
예, 방법은 여전히 이 그러나 컴파일 내장되어 자체.
이 완전히 논리적이다 - Conditional
의 포인트는 수신자가 내장되어 있지 때 발신자이 작성 될 때 정의 된 처리기 기호에 의존하기 때문이다.
using System;
using System.Diagnostics;
class Test
{
[Conditional("FOO")]
static void CallMe()
{
Console.WriteLine("Called");
}
static void Main()
{
CallMe();
}
}
는 (FOO를 정의하지 않고) 코드를 실행하면 아무런 출력이 없습니다 볼 수 있습니다,하지만 당신은 리플렉터에 보면 당신은 방법이 여전히 볼 수 있습니다 : -
간단한 시험이를 구축 할 수 있습니다.
다른 식으로 표현하면 : .NET 릴리스 된 어셈블리 (우리가 컴파일하는 어셈블리)은 DEBUG 기호가 정의되어 빌드 된 것입니까? 그들이 그렇지 않다면 (그리고 나는 그렇지 않다고 강력히 의심합니다!) Debug.Assert
등으로 전화를 걸 수있는 방법은 무엇입니까?
틀림없이 당신이 나을 개인 방법을 구축 할 때를 포함하지 -하지만 당신이 볼 수 있듯이, 그것은 여전히 내장입니다 - 단순하고 일관성을 위해 합리적이다.
+1 네 말이 맞아. 저를 어리 석다고 생각하는 것은 어땠습니까? – kemiller2002