Ausschließen von Dateien aus dem Buildvorgang

Sie können in einer Projektdatei Platzhalter verwenden, um alle Dateien in einem Verzeichnis oder einer geschachtelten Gruppe von Verzeichnissen als Eingaben für einen Buildvorgang einzuschließen. Möglicherweise gibt es jedoch eine Datei im Verzeichnis oder ein Verzeichnis in einer geschachtelten Gruppe von Verzeichnissen, die nicht als Eingabe für einen Buildvorgang eingeschlossen werden sollen. Sie können diese Datei oder dieses Verzeichnis explizit aus der Liste der Eingaben ausschließen. Vielleicht gibt es auch eine Datei in einem Projekt, das Sie nur unter bestimmten Umständen miteinbeziehen wollen. Sie können die Bedingungen explizit deklarieren, unter denen eine Datei in einem Buildvorgang enthalten ist.

Ausschließen einer Datei oder eines Verzeichnisses aus den Eingaben für einen Buildvorgang

Elementlisten sind die Eingabedateien für einen Buildvorgang. Die Elemente, die Sie einschließen möchten, werden entweder einzeln oder als Gruppe mithilfe des Attributs Include deklariert. Beispiel:

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

Wenn Sie Platzhalter verwendet haben, um alle Dateien in einem Verzeichnis oder einer geschachtelten Gruppe von Verzeichnissen als Eingaben für einen Buildvorgang einzuschließen, gibt es möglicherweise eine oder mehrere Dateien im Verzeichnis oder ein Verzeichnis in einer geschachtelten Gruppe von Verzeichnissen, die Sie nicht einschließen möchten. So verwenden Sie das Attribut Exclude zum Ausschließen eines Elements aus der Elementliste.

So schließen Sie alle CS- oder VB-Dateien außer Form2 ein

  • Ändern Sie eines der folgenden Attribute Include und Exclude:

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

    oder

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

So schließen Sie alle CS- oder VB-Dateien außer Form2 und Form3 ein

  • Ändern Sie eines der folgenden Attribute Include und Exclude:

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

    oder

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

So schließen Sie alle JPG-Dateien in Unterverzeichnisse des Verzeichnisses Images ein, außer den Dateien im Version2-Verzeichnis

  • Verwenden Sie die folgenden Attribute Include und Exclude:

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

    Hinweis

    Sie müssen den Pfad für beide Attribute angeben. Wenn Sie einen absoluten Pfad zum Angeben von Dateispeicherorten im Attribut Include verwenden, müssen Sie auch einen absoluten Pfad im Attribut Exclude verwenden. Verwenden Sie einen relativen Pfad im Attribut Include, müssen Sie auch einen relativen Pfad im Attribut Exclude verwenden.

Verwenden von Bedingungen zum Ausschließen einer Datei oder eines Verzeichnisses aus den Eingaben für einen Buildvorgang

Wenn es Elemente gibt, die Sie einschließen möchten, z.B. in einem Debugebuild, aber nicht in einem Releasebuild, können Sie das Element Condition verwenden, um die Bedingungen anzugeben, unter denen Sie das Element einschließen möchten.

So schließen Sie die Formula.vb-Datei nur in Releasebuilds ein

  • Verwenden Sie Attribut Condition, das ähnlich des Folgenden ist:

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

Beispiel

Das folgende Codebeispiel erstellt ein Projekt mit allen CS-Dateien im Verzeichnis, außer 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>