Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I en projektfil kan du använda jokertecken för att inkludera alla filer i en katalog eller en kapslad uppsättning kataloger som indata för en version. Det kan dock finnas en fil i katalogen eller en katalog i en kapslad uppsättning kataloger som du inte vill inkludera som indata för en version. Du kan uttryckligen undanta filen eller katalogen från listan med indata. Det kan också finnas en fil i ett projekt som du bara vill inkludera under vissa villkor. Du kan uttryckligen deklarera de villkor under vilka en fil ingår i en version.
Anmärkning
De tekniker som beskrivs i den här artikeln gäller inte för F# och C++. Dessa projektsystem hanterar själva källfilerna.
Exkludera en fil med Visual Studio
Om du använder Visual Studio väljer du filen i Solution Explorer, visar fönstret Egenskaper (tryck på Alt+Retur) och ställer in byggåtgärden på Ingen.
Det resulterar i följande ändringar i MSBuild-projektfilen:
<ItemGroup>
<Compile Remove="ClassToExclude.cs" />
</ItemGroup>
<ItemGroup>
<None Include="ClassToExclude.cs" />
</ItemGroup>
Det fungerar bra för några filer, men skalas inte upp till ett större antal filer eller filer som matchar ett visst mönster. I .NET-projekt kan du använda MSBuild för att exkludera filer och kataloger med ett jokerteckenuttryck, även kallat glob, enligt beskrivningen härnäst.
Exkludera filer eller kataloger i .NET-projekt
Objektlistor är indatafilerna för en version. För de flesta projekt, till exempel .NET SDK-projekt, finns det fördefinierade objektlistor med olika typer av objekt (till exempel Compile för källfiler, Content för vissa statiska filer och så vidare) som redan har definierats av standardimporterna. En lista över dessa objekt finns i Vanliga MSBuild-projektobjekt. I projektkoden är dessa fördefinierade för att inkludera allt relevant. I ett C#-projekt ingår till exempel Compile alla filer med .cs tillägget.
Om du vill exkludera filer kan du använda Remove attributet för objektet.
<ItemGroup>
<Compile Remove="ClassToExclude.cs" />
</ItemGroup>
Du kan ange flera enskilda filer eller olika globmönster:
<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>
En lista över mönster som stöds finns i Mönsterformat.
Inkludera och exkludera filer eller kataloger på MSBuild-språket
På det råa MSBuild-språket (dvs. utan någon standardimport eller referens till ett SDK) deklareras de objekt som du vill inkludera antingen separat eller som en grupp med hjälp av Include attributet. Till exempel:
<CSFile Include="Form1.cs"/>
<CSFile Include ="File1.cs;File2.cs"/>
<CSFile Include="*.cs"/>
<JPGFile Include="Images\**\*.jpg"/>
Om du använder jokertecken för att inkludera alla filer i en katalog eller en kapslad uppsättning kataloger som indata för en version kan det finnas en eller flera filer i katalogen eller en katalog i den kapslade uppsättningen kataloger som du inte vill inkludera. Om du vill exkludera ett objekt från objektlistan använder du attributet Exclude .
Exclude är egentligen inte en objektåtgärd. Det kan inte användas av sig själv, utan bara som en modifierare för Include.
Inkludera alla .cs eller .vb filer utom Form2
Använd någon av följande
IncludeochExcludeattribut:<CSFile Include="*.cs" Exclude="Form2.cs"/>eller
<VBFile Include="*.vb" Exclude="Form2.vb"/>
Inkludera alla .cs eller .vb filer utom Form2 och Form3
Använd någon av följande
IncludeochExcludeattribut:<CSFile Include="*.cs" Exclude="Form2.cs;Form3.cs"/>eller
<VBFile Include="*.vb" Exclude="Form2.vb;Form3.vb"/>
Inkludera alla .jpg filer i underkataloger i Images katalogen förutom de i Version2 katalogen
Använd följande
IncludeochExcludeattribut:<JPGFile Include="Images\**\*.jpg" Exclude = "Images\**\Version2\*.jpg"/>Anmärkning
Du måste ange sökvägen för båda attributen. Om du använder en absolut sökväg för att ange filplatser i
Includeattributet måste du också använda en absolut sökväg iExcludeattributet. Om du använder en relativ sökväg iIncludeattributet måste du också använda en relativ sökväg iExcludeattributet.
Exkludera och ta bort
Om du definierar dina egna objektlistor bör du använda Exclude när det är möjligt. Det finns en prestandafördel att använda Exclude i samma deklaration som Include, eftersom de objekt som skulle undantas inte behöver bearbetas.
Använd Remove när du har en fördefinierad objektlista, till exempel när det gäller standardobjektlistor som Compile och Content. I så fall Exclude stöds inte.
Anmärkning
Om du använder en SDK som stöder den kan du ange $(OverrideDefaultCompileItems) egenskapen till trueoch definiera ditt eget Compile objekt med Include och, om du vill, Exclude.
Använd villkor för att undanta en fil eller katalog från indata för en build
Om det finns objekt som du vill inkludera, till exempel i en felsökningsversion men inte en versionsversion, kan du använda Condition attributet för att ange under vilka villkor objektet ska inkluderas.
Inkludera endast filen Formula.vb i releaseversioner
Använd ett
Conditionattribut som liknar följande:<Compile Include="Formula.vb" Condition=" '$(Configuration)' == 'Release' " />
Exempel
I följande kodexempel skapas ett projekt med alla .cs filer i katalogen förutom Form2.cs.
<Project DefaultTargets="Compile">
<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>