방법: 빌드에서 파일 제외
프로젝트 파일에서 와일드카드를 사용하여 한 디렉터리의 모든 파일 또는 중첩 디렉터리 집합을 빌드의 입력으로 포함할 수 있습니다. 그러나 디렉터리의 파일 하나 또는 중첩된 디렉터리 집합 중 디렉터리 하나를 빌드에 대한 입력에 포함하지 않으려는 경우에는 입력 목록에서 해당 파일이나 디렉터리를 명시적으로 제외할 수 있습니다. 또한 특정한 조건에서만 파일을 프로젝트에 포함하려는 경우에는 파일을 빌드에 포함할 조건을 명시적으로 선언할 수 있습니다.
빌드의 입력에서 파일 또는 디렉터리 제외
항목 목록은 빌드의 입력 파일입니다. 포함할 항목은 별도로 선언되거나 Include 특성을 사용하여 그룹으로 선언됩니다. 예를 들면 다음과 같습니다.
<CSFile Include="Form1.cs"/>
<CSFile Include ="File1.cs;File2.cs"/>
<CSFile Include="*.cs"/>
<JPGFile Include="Images\**\*.jpg"/>
와일드카드를 사용하여 한 디렉터리의 모든 파일 또는 중첩 디렉터리 집합을 빌드의 입력으로 포함한 경우 디렉터리의 파일 하나 이상이나 중첩 디렉터리 집합 중 한 디렉터리를 포함하지 않으려는 경우가 있을 수 있습니다. 항목 목록에서 항목을 제외하려면 Exclude 특성을 사용합니다.
Form2를 제외하고 모든 .cs 또는 .vb 파일을 포함하려면
다음 Include와 Exclude 특성 중 하나를 사용합니다.
<CSFile Include="*.cs" Exclude="Form2.cs"/>
- 또는 -
<VBFile Include="*.vb" Exclude="Form2.vb"/>
Form2 및 Form3을 제외하고 모든 .cs 또는 .vb 파일을 포함하려면
다음 Include와 Exclude 특성 중 하나를 사용합니다.
<CSFile Include="*.cs" Exclude="Form2.cs;Form3.cs"/>
- 또는 -
<VBFile Include="*.vb" Exclude="Form2.vb;Form3.vb"/>
Version2 디렉터리의 .jpg 파일만 제외하고 Images 디렉터리의 하위 디렉터리에 있는 모든 .jpg 파일을 포함하려면
다음 Include와 Exclude 특성을 사용합니다.
<JPGFile
Include="Images\**\*.jpg"
Exclude = "Images\**\Version2\*.jpg"/>
참고
두 특성 모두에 대해 경로를 지정해야 합니다. Include 특성에 절대 경로를 사용하여 파일 위치를 지정할 경우 Exclude 특성에도 절대 경로를 사용해야 합니다. Include 특성에 상대 경로를 지정할 경우 Exclude 특성에도 상대 경로를 사용해야 합니다.
조건을 사용하여 빌드의 입력에서 파일 또는 디렉터리 제외
예를 들어 디버그 빌드에는 포함하지만 릴리스 빌드에는 포함하지 않으려는 항목이 있으면 Condition 특성을 사용하여 항목을 포함할 조건을 지정할 수 있습니다.
Formula.vb 파일을 릴리스 빌드에만 포함하려면
다음과 같이 Condition 특성을 사용합니다.
<Compile
Include="Formula.vb"
Condition=" '$(Configuration)' == 'Release' " />
예제
다음 코드 예제에서는 Form2.cs를 제외하고 디렉터리의 모든 .cs 파일을 사용하여 프로젝트를 빌드합니다.
<Project DefaultTargets="Compile"
xmlns="https://schemas.microsoft.com/developer/msbuild/2003" >
<PropertyGroup>
<builtdir>built</builtdir>
</PropertyGroup>
<ItemGroup>
<CSFile Include="*.cs Exclude="Form2.cs"/>
<Reference Include="System.dll"/>
<Reference Include="System.Data.dll"/>
<Reference Include="System.Drawing.dll"/>
<Reference Include="System.Windows.Forms.dll"/>
<Reference Include="System.XML.dll"/>
</ItemGroup>
<Target Name="PreBuild">
<Exec Command="if not exist $(builtdir) md $(builtdir)"/>
</Target>
<Target Name="Compile" DependsOnTargets="PreBuild">
<Csc Sources="@(CSFile)"
References="@(Reference)"
OutputAssembly="$(builtdir)\$(MSBuildProjectName).exe"
TargetType="exe" />
</Target>
</Project>