2010-04-07 5 views
9

조건부로 C#에서 전체 네임 스페이스를 컴파일하는 방법이 있는지 궁금합니다. 아니면 네임 스페이스 내의 각 소스 파일을 전처리 지시어로 명시 적으로 꾸미지 않고 제외해야합니까? 내 응용 프로그램의 하위 버전에서는 다양한 네임 스페이스의 코드가 단순히 필요하지 않으므로 제외시키고 싶습니다.조건부로 전체 네임 스페이스 컴파일 - C#

미리 감사드립니다.

답변

4

네임 스페이스가 다른 어셈블리에 포함되어 있지 않으면 별도의 하위 버전으로 구성 관리자를 사용하고 "빌드"확인란의 선택을 취소 할 수 있습니다.

어셈블리에 다른 클래스가 있지만 분명히 포함되거나 포함되지는 않으며 전 처리기 선언으로 장식하는 유일한 방법입니다.

1

각 파일에 조건부 컴파일 지시문을 넣어야합니다. 전체 이름 공간을 조건부 컴파일로 표시 할 수있는 방법은 없습니다.

Michael notes in his answer으로 가능한 해결 방법은 조건부 코드를 별도의 프로젝트 (어셈블리)로 분해 한 다음 필요로하는 구성에만 해당 어셈블리를 제공하는 것입니다. 그러나 이것은 조건부 코드의 성격에 달려 있습니다.

+0

추가 정보를 제공해 주셔서 감사합니다. –

1

각 파일을 꾸미거나이 파일을 포함시킬 수 있습니다. MSBuild와 csc는 모두 경로 아래 모든 파일을 포함 할 수있는 옵션을 가지고 있으며 MSBuild는 추가적으로 구성별로 별도의 csproj를 요구하지 않고 속성을 기반으로 빌드 항목을 조건부로 포함 할 수 있습니다.

하지만 직접 내가 같은 문제가 있고, 각 파일에 지시어를 사용하여 결국 너무 많은 일이되었다

1

을 ;-p 파일을 장식하는 것이 더 쉬울 것입니다; 그래서 나는 조건부 <ItemGroup> 태그를 .csproj 파일에 사용하기 시작했다.

내가 빌드에서 일부 파일을 제외 할 경우 예를 들어, 나는 ... 새로운 <ItemGroup> 섹션으로

<ItemGroup Condition=" '$(SlimBuild)' != 'true' "> 
... 
</ItemGroup> 

이러한 파일을 이동합니다 ... 그리고 함께 MSBuild.exe를 호출 일치하는 특성 매개 변수.

미래의 파일을 포함 시키려면 와일드 카드를 사용할 수도 있습니다.

<ItemGroup> 
    <Compile Include=".\SomePath\*.cs" /> 
</ItemGroup>