많은 개발자는 이후 버전에 도입된 기능을 사용하는 동안 여러 .NET 프레임워크 버전을 지원해야 하는 시나리오에 직면합니다. 한 가지 일반적인 예는 .NET 3.0에 도입된 확장 메서드를 활용하는 것입니다. 그러나 .NET 2.0을 대상으로 하는 프로젝트에서 확장 메서드를 사용하려면 ExtensionAttribute 클래스를 정의해야 하며, 이는 더 높은 프레임워크 버전을 대상으로 할 때 충돌이 발생할 수 있습니다.
질문이 생깁니다. .NET 2.0용으로 컴파일할 때만 ExtensionAttribute 클래스를 조건부로 포함하는 방법은 무엇입니까? 답은 조건부 컴파일 지시문을 사용하는 것입니다.
Visual Studio는 전처리기 기호를 기반으로 코드 블록을 포함하거나 제외할 수 있는 조건부 컴파일 지시문을 제공합니다. TargetFrameworkVersion 속성은 대상 프레임워크 버전을 나타내는 전처리기 기호 중 하나입니다.
조건부 컴파일 지시문을 사용하려면 프로젝트의 .csproj 파일에 기존 DefineConstants 뒤에 DefineConstants 요소를 추가하면 됩니다. 강요. 예:
<DefineConstants> <DefineConstants Condition=" '$(TargetFrameworkVersion)' == 'v4.0' ">RUNNING_ON_4</DefineConstants> <DefineConstants Condition=" '$(TargetFrameworkVersion)' != 'v4.0' ">NOT_RUNNING_ON_4</DefineConstants> </DefineConstants>
위 코드는 두 개의 상수를 정의합니다. .NET 4.0을 대상으로 하는 경우 RUNNING_ON_4이고 그렇지 않은 경우 NOT_RUNNING_ON_4입니다.
상수가 정의되면, #if, #elseif 및를 사용하여 조건부로 코드 블록을 포함하거나 제외할 수 있습니다. #else 지시어. 예:
class Program { static void Main(string[] args) { #if RUNNING_ON_4 Console.WriteLine("RUNNING_ON_4 was set"); #endif #if NOT_RUNNING_ON_4 Console.WriteLine("NOT_RUNNING_ON_4 was set"); #endif
이 코드는 .NET 4.0용으로 컴파일할 때 "RUNNING_ON_4 was set"을 인쇄하고 다른 프레임워크 버전의 경우 "NOT_RUNNING_ON_4 was set"을 인쇄합니다.
조건부 컴파일 지시문을 사용하고 TargetFrameworkVersion을 기반으로 상수를 정의합니다. 전처리기 기호를 사용하면 대상 프레임워크 버전에 따라 코드 블록을 선택적으로 포함할 수 있습니다. 이를 통해 빌드 오류나 경고가 발생하지 않고 .NET 프레임워크의 여러 버전을 지원할 수 있습니다.
위 내용은 컴파일 타임에 대상 .NET Framework 버전을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!