Dela via


Objektelement (MSBuild)

Innehåller ett användardefinierat objekt och dess metadata. Varje objekt som används i ett MSBuild-projekt måste anges som underordnat ett ItemGroup element.

<Projekt>
  <ItemGroup>
   <Sak>

Syntax

<Item Include="*.cs"
        Exclude="MyFile.cs"
        Condition="'String A'=='String B'">
    <ItemMetadata1>...</ItemMetadata1>
    <ItemMetadata2>...</ItemMetadata2>
</Item>

Ange metadata som attribut

Du kan ange objektmetadata som attribut för som underordnade element. Metadata med ett namn som inte står i konflikt med den aktuella listan med attribut kan uttryckas som ett attribut.

Om du till exempel vill ange en lista över NuGet-paket använder du normalt något som liknar följande syntax.

<ItemGroup>
  <PackageReference Include="Newtonsoft.Json">
    <Version>9.0.1-beta1<Version>
  </PackageReference>
</ItemGroup>

Nu kan du dock skicka Version metadata som ett attribut, till exempel i följande syntax:

<ItemGroup>
  <PackageReference Include="Newtonsoft.Json" Version="9.0.1-beta1" />
</ItemGroup>

Attribut och element

I följande avsnitt beskrivs attribut, underordnade element och överordnade element.

Attributes

Attribute Description
Include Valfritt attribut.

Filen eller jokertecknet som ska inkluderas i listan med objekt.
Exclude Valfritt attribut.

Filen eller jokertecknet som ska undantas från listan med objekt.
Condition Valfritt attribut.

Villkoret som ska utvärderas. Mer information finns i Villkor.
Remove Valfritt attribut.

Filen eller jokertecknet som ska tas bort från listan med objekt.

MatchOnMetadata Valfritt attribut.

Remove Ändrar attribut som refererar till andra objekt så att de matchar de angivna metadatanamnen i stället för att matcha de refererade objektens värden.

Det här attributet är endast giltigt om det anges tillsammans med ett Remove attribut som endast innehåller referenser till andra objekt (till exempel Remove="@(Compile);@(Content)"). Mer information finns i Objekt.
MatchOnMetadataOptions Valfritt attribut.

Anger den strängmatchningsstrategi som används av MatchOnMetadata. Möjliga värden är CaseSensitive, CaseInsensitiveeller PathLike. Standardvärdet är CaseInsensitive.
KeepDuplicates Valfritt attribut.

Anger om ett objekt ska läggas till i målgruppen om det är en exakt dubblett av ett befintligt objekt. Om käll- och målobjektet har samma Include värde men olika metadata läggs objektet till även om KeepDuplicates det är inställt på false. Mer information finns i Objekt.

Det här attributet är endast giltigt om det har angetts för ett objekt i en ItemGroup som finns i en Target.
KeepMetadata Valfritt attribut.

Metadata för källobjekten som ska läggas till i målobjekten. Endast de metadata vars namn anges i den semikolonavgränsade listan överförs från ett källobjekt till ett målobjekt. Mer information finns i Objekt.

Det här attributet är endast giltigt om det har angetts för ett objekt i en ItemGroup som finns i en Target.
RemoveMetadata Valfritt attribut.

Metadata för källobjekten som inte ska överföras till målobjekten. Alla metadata överförs från ett källobjekt till ett målobjekt utom metadata vars namn finns i den semikolonavgränsade listan med namn. Mer information finns i Objekt.

Det här attributet är endast giltigt om det har angetts för ett objekt i en ItemGroup som finns i en Target.
Update Valfritt attribut. (Endast tillgängligt för .NET Core-projekt i Visual Studio 2017 eller senare.)

Gör att du kan ändra metadata för ett objekt. används vanligtvis för att åsidosätta standardmetadata för specifika objekt när en grupp objekt ursprungligen har angetts (till exempel med ett jokertecken).

Det här attributet är endast giltigt om det har angetts för ett objekt i en ItemGroup som inte finns i en Target.

Underordnade element

Komponent Description
ItemMetadata En användardefinierad objektmetadatanyckel som innehåller objektets metadatavärde. Det kan finnas noll eller fler ItemMetadata element i ett objekt.

MSBuild tolkar underordnade element på objektelement som objektmetadata.

Överordnade element

Komponent Description
ItemGroup Grupperingselement för objekt.

Anmärkningar

Item element definierar indata i byggsystemet och grupperas i objektsamlingar baserat på deras användardefinierade samlingsnamn. Dessa objektsamlingar kan användas som parametrar för uppgifter, som använder enskilda objekt i samlingarna för att utföra stegen i byggprocessen. Mer information finns i Objekt.

Med notationen @(<myType>) kan en samling objekt av typen <myType> expanderas till en semikolonavgränsad lista med strängar och skickas till en parameter. Om parametern är av typen stringär värdet för parametern listan över element, avgränsade med semikolon. Om parametern är en matris med strängar (string[]) infogas varje element i matrisen baserat på semikolonens plats. Om aktivitetsparametern är av typen ITaskItem[]är värdet innehållet i objektsamlingen tillsammans med eventuella kopplade metadata. Om du vill avgränsa varje objekt med ett annat tecken än ett semikolon använder du syntaxen @(<myType>, '<avgränsare>').

MSBuild-motorn kan utvärdera jokertecken som * och ? rekursiva jokertecken, till exempel /**/*.cs. Mer information finns i Objekt.

Examples

I följande kodexempel visas hur du deklarerar två objekt av typen CSFile. Det andra deklarerade objektet innehåller metadata som har MyMetadata angetts till HelloWorld.

<ItemGroup>
    <CSFile Include="engine.cs; form.cs" />
    <CSFile Include="main.cs" >
        <MyMetadata>HelloWorld</MyMetadata>
    </CSFile>
</ItemGroup>

Följande kodexempel visar hur du använder Update attributet för att ändra metadata i en fil som heter somefile.cs som inkluderades via en glob. (Endast tillgängligt för .NET Core-projekt i Visual Studio 2017 eller senare.)

<ItemGroup>
    <Compile Update="somefile.cs">  // or Update="*.designer.cs"
        <MetadataKey>MetadataValue</MetadataKey>
    </Compile>
</ItemGroup>

Se även