Gewusst wie: Erstellen aller Dateien in einem Verzeichnis mit Ausnahme einer Datei

Aktualisiert: November 2007

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

Elementauflistungen 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. Um ein Element aus der Elementauflistung auszuschließen, verwenden Sie das Exclude-Attribut.

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"/>
    
    Hinweis:

    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: Verwenden von Platzhaltern zum Erstellen aller Dateien in einem Verzeichnis

Konzepte

MSBuild-Elemente

MSBuild