Wykluczanie plików z kompilacji

W pliku projektu można użyć symboli wieloznacznych, aby uwzględnić wszystkie pliki w jednym katalogu lub zagnieżdżony zestaw katalogów jako dane wejściowe dla kompilacji. Może jednak istnieć jeden plik w katalogu lub jeden katalog w zagnieżdżonym zestawie katalogów, które nie mają być uwzględniane jako dane wejściowe dla kompilacji. Możesz jawnie wykluczyć ten plik lub katalog z listy danych wejściowych. W projekcie może być również plik, który ma zostać uwzględniny tylko w określonych warunkach. Możesz jawnie zadeklarować warunki, w których plik jest uwzględniony w kompilacji.

Wykluczanie pliku lub katalogu z danych wejściowych kompilacji

Listy elementów to pliki wejściowe kompilacji. Elementy, które chcesz dołączyć, są deklarowane oddzielnie lub jako grupa przy użyciu atrybutu Include . Na przykład:

<CSFile Include="Form1.cs"/>
<CSFile Include ="File1.cs;File2.cs"/>
<CSFile Include="*.cs"/>
<JPGFile Include="Images\**\*.jpg"/>

Jeśli użyto symboli wieloznacznych do uwzględnienia wszystkich plików w jednym katalogu lub zagnieżdżonego zestawu katalogów jako danych wejściowych dla kompilacji, może istnieć co najmniej jeden plik w katalogu lub jeden katalog w zagnieżdżonym zestawie katalogów, które nie chcesz uwzględniać. Aby wykluczyć element z listy elementów, użyj atrybutu Exclude .

Aby uwzględnić wszystkie pliki cs lub vb z wyjątkiem formularza Form2

  • Użyj jednego z następujących Include atrybutów i Exclude :

    <CSFile Include="*.cs" Exclude="Form2.cs"/>
    

    lub

    <VBFile Include="*.vb" Exclude="Form2.vb"/>
    

Aby dołączyć wszystkie pliki cs lub vb z wyjątkiem Form2 i Form3

  • Użyj jednego z następujących Include atrybutów i Exclude :

    <CSFile Include="*.cs" Exclude="Form2.cs;Form3.cs"/>
    

    lub

    <VBFile Include="*.vb" Exclude="Form2.vb;Form3.vb"/>
    

Aby uwzględnić wszystkie pliki jpg w podkatalogach katalogu Images z wyjątkiem plików w katalogu Version2

  • Użyj następujących Include atrybutów i Exclude :

    <JPGFile
        Include="Images\**\*.jpg"
        Exclude = "Images\**\Version2\*.jpg"/>
    

    Uwaga

    Należy określić ścieżkę dla obu atrybutów. Jeśli używasz ścieżki bezwzględnej do określania lokalizacji plików w atrybucie Include , musisz również użyć ścieżki bezwzględnej w Exclude atrybucie. Jeśli używasz ścieżki względnej w atrybucie Include , musisz również użyć ścieżki względnej w atrybucie Exclude .

Użyj warunków, aby wykluczyć plik lub katalog z danych wejściowych kompilacji

Jeśli istnieją elementy, które chcesz uwzględnić, na przykład w kompilacji debugowania, ale nie kompilacji wydania, możesz użyć atrybutu Condition , aby określić warunki, w których ma zostać uwzględniny element.

Aby uwzględnić plik Formula.vb tylko w kompilacjach wydania

  • Użyj atrybutu Condition podobnego do następującego:

    <Compile
        Include="Formula.vb"
        Condition=" '$(Configuration)' == 'Release' " />
    

Przykład

Poniższy przykład kodu kompiluje projekt ze wszystkimi plikami cs w katalogu z wyjątkiem Form2.cs.

<Project DefaultTargets="Compile"
    xmlns="http://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>