Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In einer Projektdatei können Sie Mithilfe von Wildcards alle Dateien in einem Verzeichnis oder einen geschachtelten Satz von Verzeichnissen als Eingaben für einen Build einschließen. Es kann jedoch eine Datei im Verzeichnis oder in einem verzeichnis in einem geschachtelten Satz von Verzeichnissen geben, die Sie nicht als Eingabe für einen Build einschließen möchten. Sie können diese Datei oder das Verzeichnis explizit aus der Liste der Eingaben ausschließen. Es kann auch eine Datei in einem Projekt geben, die Nur unter bestimmten Bedingungen eingeschlossen werden soll. Sie können explizit die Bedingungen deklarieren, unter denen eine Datei in einem Build enthalten ist.
Hinweis
Die in diesem Artikel beschriebenen Techniken gelten nicht für F# und C++. Diese Projektsysteme verwalten die Quelldateien selbst.
Ausschließen einer Datei mit Visual Studio
Wenn Sie Visual Studio verwenden, wählen Sie die Datei im Projektmappen-Explorer aus, öffnen Sie das Eigenschaftenfenster (drücken Sie Alt+Eingabetaste), und legen Sie die Buildaktion auf Keine fest.
Dies führt zu den folgenden Änderungen in der MSBuild-Projektdatei:
<ItemGroup>
<Compile Remove="ClassToExclude.cs" />
</ItemGroup>
<ItemGroup>
<None Include="ClassToExclude.cs" />
</ItemGroup>
Dies eignet sich gut für einige Dateien, skaliert aber nicht auf eine größere Anzahl von Dateien oder Dateien, die einem bestimmten Muster entsprechen. In .NET-Projekten können Sie MSBuild verwenden, um Dateien und Verzeichnisse mithilfe eines Wildcardausdrucks, auch als Glob bezeichnet, auszuschließen, wie weiter beschrieben.
Ausschließen von Dateien oder Verzeichnissen in .NET-Projekten
Elementlisten sind die Eingabedateien für einen Build. Für die meisten Projekte, z. B. .NET SDK-Projekte, gibt es vordefinierte Elementlisten verschiedener Elementtypen (z Compile
. B. für Quelldateien, Content
für bestimmte statische Dateien usw.), die bereits durch die Standardimporte definiert sind. Eine Liste dieser Elemente finden Sie unter "Common MSBuild"-Projektelemente. In Ihrem Projektcode sind diese vordefiniert, um alle relevanten Elemente einzuschließen. Beispiel: Compile
In einem C#-Projekt sind alle Dateien mit der .cs
Erweiterung enthalten.
Um Dateien auszuschließen, können Sie das Remove
Attribut für das Element verwenden.
<ItemGroup>
<Compile Remove="ClassToExclude.cs" />
</ItemGroup>
Sie können mehrere einzelne Dateien oder verschiedene Globmuster angeben:
<ItemGroup>
<Compile Remove="Contoso*.cs" /> <!-- Wildcard on filename -->
<Compile Remove="File1.cs;File2.cs" /> <!-- List of files with separator -->
<Compile Remove="Contoso/**/*.cs" /> <!-- All .cs files in a directory subtree -->
</ItemGroup>
Eine Liste der unterstützten Muster finden Sie unter Musterformate.
Einschließen und Ausschließen von Dateien oder Verzeichnissen in der MSBuild-Sprache
In der unformatierten MSBuild-Sprache (d. h. ohne Standardimporte oder Verweis auf ein SDK) werden die Elemente, die Sie einschließen möchten, entweder separat oder als Gruppe mit dem Include
Attribut deklariert. Beispiel:
<CSFile Include="Form1.cs"/>
<CSFile Include ="File1.cs;File2.cs"/>
<CSFile Include="*.cs"/>
<JPGFile Include="Images\**\*.jpg"/>
Wenn Sie Wildcards verwenden, um alle Dateien in einem Verzeichnis oder einen geschachtelten Satz von Verzeichnissen als Eingaben für einen Build einzuschließen, gibt es möglicherweise eine oder mehrere Dateien im Verzeichnis oder in einem Verzeichnis in der geschachtelten Gruppe von Verzeichnissen, die Sie nicht einschließen möchten. Verwenden Sie das Exclude
Attribut, um ein Element aus der Elementliste auszuschließen.
Exclude
ist eigentlich kein Elementvorgang; sie kann nicht allein verwendet werden, sondern nur als Modifizierer für Include
.
Alle .cs
- oder .vb
-Dateien außer Form2
einfügen.
Verwenden Sie eines der folgenden
Include
undExclude
Attribute:<CSFile Include="*.cs" Exclude="Form2.cs"/>
oder
<VBFile Include="*.vb" Exclude="Form2.vb"/>
Um alle .cs
-Dateien außer .vb
und Form2
einzubeziehen
Verwenden Sie eines der folgenden
Include
undExclude
Attribute:<CSFile Include="*.cs" Exclude="Form2.cs;Form3.cs"/>
oder
<VBFile Include="*.vb" Exclude="Form2.vb;Form3.vb"/>
So fügen Sie alle .jpg
Dateien in Unterverzeichnisse des Images
Verzeichnisses mit Ausnahme der Dateien im Version2
Verzeichnis ein
Verwenden Sie die folgenden
Include
undExclude
Attribute:<JPGFile Include="Images\**\*.jpg" Exclude = "Images\**\Version2\*.jpg"/>
Hinweis
Sie müssen den Pfad für beide Attribute angeben. Wenn Sie einen absoluten Pfad verwenden, um Dateispeicherorte im
Include
Attribut anzugeben, müssen Sie auch einen absoluten Pfad imExclude
Attribut verwenden. Wenn Sie einen relativen Pfad imInclude
Attribut verwenden, müssen Sie auch einen relativen Pfad imExclude
Attribut verwenden.
Ausschließen und Entfernen
Wenn Sie Ihre eigenen Elementlisten definieren, sollten Sie nach Möglichkeit verwenden Exclude
. Es gibt einen Leistungsvorteil bei der Verwendung Exclude
in derselben Deklaration wie Include
, da die ausgeschlossenen Elemente nicht verarbeitet werden müssen.
Verwenden Sie Remove
, wenn Sie über eine vordefinierte Artikelliste verfügen, wie im Fall der Standardlisten wie Compile
und Content
. In diesem Fall wird Exclude
nicht unterstützt.
Hinweis
Wenn Sie ein SDK verwenden, das es unterstützt, können Sie die $(OverrideDefaultCompileItems)
Eigenschaft auf true
festlegen und Ihr eigenes Compile
Element mit Include
und optional Exclude
definieren.
Verwenden von Bedingungen zum Ausschließen einer Datei oder eines Verzeichnisses aus den Eingaben für einen Build
Wenn Elemente vorhanden sind, die Sie einschließen möchten, z. B. in einem Debugbuild, aber nicht in einem Release-Build, können Sie das Condition
Attribut verwenden, um die Bedingungen anzugeben, unter denen das Element eingeschlossen werden soll.
Fügen Sie die Datei Formula.vb nur in Release-Builds ein
Verwenden Sie ein
Condition
Attribut ähnlich dem folgenden:<Compile Include="Formula.vb" Condition=" '$(Configuration)' == 'Release' " />
Beispiel
Im folgenden Codebeispiel wird ein Projekt mit allen .cs Dateien im Verzeichnis erstellt, mit Ausnahme von 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>