대규모 프로젝트에서 개발자는 디버그 빌드와 릴리스 빌드를 구별해야 하는 경우가 많습니다. 특정 코드 섹션을 활성화하거나 비활성화합니다. 이에 대한 두 가지 일반적인 접근 방식은 #if DEBUG 및 Conditional("DEBUG")입니다.
장점:
단점:
Conditional("DEBUG") 속성은 DEBUG 컴파일 기호에 따라 조건부로 제외될 메서드나 유형에 태그를 지정합니다. 그러나 #if DEBUG와 달리 코드는 IL에 여전히 존재하지만 호출자가 컴파일될 때 DEBUG가 설정되지 않는 한 메서드에 대한 호출은 최적화되지 않습니다.
장점:
단점:
#if DEBUG와 Conditional("DEBUG") 사이의 선택은 프로젝트의 특정 요구 사항에 따라 다릅니다.
`
[조건부("DEBUG")]
protected void verifyPropertyName(String propertyName)
{
// ... code to validate property name ...
}
`
이 방법을 사용하면 디버깅 중에 속성 이름의 유효성이 검사되지만 해당 호출은 디버깅 중에 생략됩니다. 릴리스 빌드.
`
public const String ENDPOINT = "Localhost";
public const String ENDPOINT = "BasicHttpBinding";
`
이 상수는 DEBUG 플래그에 따라 다르게 구성되어 디버그 및 릴리스 빌드에 대해 서로 다른 통신 바인딩을 허용합니다.
다음이 중요합니다. Conditional("DEBUG") 주석이 달린 메서드에 대한 호출은 런타임이 아닌 컴파일 중에 제외됩니다. 즉, 호출 어셈블리에 DEBUG가 정의되어 있더라도 조건부로 컴파일된 어셈블리 내에서 해당 메서드에 대한 모든 호출이 영구적으로 제거됩니다.
위 내용은 #if DEBUG 대 Conditional('DEBUG'): C# 프로젝트에 어떤 조건부 컴파일 기술을 선택해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!