조건부 컴파일로 여러 .NET 프레임워크 타겟팅
조건부 컴파일은 C# 코드를 특정 .NET Framework 버전에 맞게 조정하여 호환성을 보장하고 버전별 오류를 방지하는 강력한 메커니즘을 제공합니다. 이는 전처리기 지시문을 통해 달성됩니다.
전처리기 지시어 활용
전처리기 지시문을 사용하면 정의된 기호를 기반으로 코드 블록을 조건부로 포함하거나 제외할 수 있습니다. 예:
<code class="language-csharp">#if NET40 using FooXX = Foo40; #elif NET35 using FooXX = Foo35; #else using FooXX = Foo20; // Default if NET40 and NET35 aren't defined #endif</code>
NET40
, NET35
, NET20
은 자동으로 정의되지 않습니다. 명시적으로 설정해야 합니다.
MSBuild를 통해 기호 정의
/p:DefineConstants
MSBuild 속성을 사용하여 이러한 기호를 삽입할 수 있습니다.
<code>/p:DefineConstants="NET40"</code>
이렇게 하면 프로젝트의 빌드 구성에 NET40
기호가 추가됩니다.
빌드 구성 관리
또는 프로젝트 파일 내에 고유한 빌드 구성을 생성하세요. 각 구성은 고유한 DefineConstants
값을 정의할 수 있습니다:
<code class="language-xml"><PropertyGroup Condition="'$(Framework)' == 'NET20'"> <DefineConstants>NET20</DefineConstants> </PropertyGroup> <PropertyGroup Condition="'$(Framework)' == 'NET35'"> <DefineConstants>NET35</DefineConstants> </PropertyGroup></code>
구성 중 하나에서 기본 프레임워크 버전을 설정합니다. 예를 들면 다음과 같습니다.
<code class="language-xml"><PropertyGroup> <Framework>NET35</Framework> </PropertyGroup></code>
다른 버전에 대한 자동 재컴파일
빌드 구성을 정의한 후 AfterBuild
대상을 사용하여 다른 프레임워크 버전에 대해 자동으로 다시 컴파일하세요.
<code class="language-xml"><Target Name="AfterBuild"> <MSBuild Projects="$(MSBuildProjectFile)" Properties="Framework=NET20" RunEachTargetSeparately="true" Condition="'$(Framework)' != 'NET20'" /> </Target></code>
초기 빌드 후 프로젝트를 .NET 2.0용으로 다시 컴파일합니다(.NET 3.5가 기본값이라고 가정). 각 편집은 적절한 조건부 정의를 활용합니다.
첨단기술
조건부 컴파일은 단순한 using
문 이상으로 확장됩니다. 또한 대상 프레임워크를 기반으로 전체 파일이나 참조를 조건부로 포함하거나 제외하여 빌드 프로세스를 세밀하게 제어할 수 있습니다.
위 내용은 조건부 컴파일을 사용하여 다양한 .NET Framework 버전을 대상으로 지정하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!