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