Gewusst wie: Ausschließen von Dateien vom Buildvorgang

In einer Projektdatei können Sie Platzhalter verwenden, um alle Dateien in einem Verzeichnis oder eine verschachtelte Gruppe von Verzeichnissen als Eingaben für einen Build einzuschließen. Möglicherweise gibt es jedoch eine Datei im Verzeichnis bzw. ein Verzeichnis in einer verschachtelten Gruppe von Verzeichnissen, die bzw. das nicht als Eingabe für einen Build eingeschlossen werden soll. Sie können diese Datei oder dieses Verzeichnis explizit aus der Liste der Eingaben ausschließen. Möglicherweise gibt es auch eine Projektdatei, die unter bestimmten Bedingungen eingeschlossen werden soll. Sie können die Bedingungen, unter denen eine Datei in einen Build eingeschlossen wird, explizit deklarieren.

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

Elementlisten stellen die Eingabedateien für einen Build dar. Die Elemente, die Sie einschließen möchten, werden entweder separat oder unter Verwendung des Include-Attributs als Gruppe deklariert. Beispiel:

<CSFile Include="Form1.cs"/>

<CSFile Include ="File1.cs;File2.cs"/>

<CSFile Include="*.cs"/>

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

Falls Sie Platzhalter verwendet haben, um alle Dateien in einem Verzeichnis bzw. eine geschachtelte Gruppe von Verzeichnissen als Eingaben für einen Build einzuschließen, gibt es möglicherweise eine oder mehrere Dateien in dem Verzeichnis bzw. ein Verzeichnis in einer geschachtelten Gruppe von Verzeichnissen, die bzw. das Sie nicht einschließen möchten. Verwenden Sie das Exclude-Attribut, um ein Element aus der Elementauflistung auszuschließen.

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

  • Verwenden Sie eines der folgenden Include-Attribute und Exclude-Attribute:

    <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

  • Verwenden Sie eines der folgenden Include-Attribute und Exclude-Attribute:

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

    – oder –

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

So schließen Sie alle JPG-Dateien aus den Unterverzeichnissen des Verzeichnisses Images außer denen im Verzeichnis Version2 ein

  • Verwenden Sie das folgende Include-Attribut und Exclude-Attribut:

    <JPGFile

    Include="Images\**\*.jpg"

    Exclude = "Images\**\Version2\*.jpg"/>

    Tipp

    Sie müssen den Pfad für beide Attribute angeben. Wenn Sie die Dateispeicherorte im Include-Attribut über einen absoluten Pfad angeben, müssen Sie auch einen absoluten Pfad im Exclude-Attribut verwenden. Wenn Sie einen relativen Pfad im Include-Attribut angeben, müssen Sie auch einen relativen Pfad im Exclude-Attribut verwenden.

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

Wenn Sie Elemente beispielsweise in ein Debugbuild, nicht jedoch in ein Releasebuild einschließen möchten, können Sie mithilfe des Condition-Attributs die Bedingungen angeben, unter denen das Element eingeschlossen werden soll.

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

  • Verwenden Sie ein mit dem folgenden Beispiel vergleichbares Condition-Attribut:

    <Compile

    Include="Formula.vb"

    Condition=" '$(Configuration)' == 'Release' " />

Beispiel

Mit dem folgenden Codebeispiel wird ein Projekt mit allen CS-Dateien im Verzeichnis mit Ausnahme der Datei Form2.cs erstellt.

<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>

Siehe auch

Aufgaben

Gewusst wie: Auswählen von Dateien für den Buildvorgang

Konzepte

MSBuild-Elemente

Weitere Ressourcen

MSBuild