Share via


NETSDK1022: Dubbletter inkluderades

Den här artikeln gäller för: ✔️ .NET Core 2.1.100 SDK och senare versioner

Från och med Visual Studio 2017/MSBuild version 15.3 innehåller .NET SDK automatiskt objekt från projektkatalogen som standard. Dessa objekt inkluderar Compile och Content mål. Det här beteendet förenklar projektfilerna.

Men om du uttryckligen definierar något av dessa objekt i projektfilen får du förmodligen ett byggfel som liknar följande:

Dubbletter av kompileringsobjekt inkluderades. .NET SDK innehåller kompileringsobjekt från projektkatalogen som standard. Du kan antingen ta bort dessa objekt från projektfilen eller ange egenskapen "EnableDefaultCompileItems" till "false" om du uttryckligen vill inkludera dem i projektfilen.

Duplicerade "EmbeddedResource"-objekt inkluderades. .NET SDK innehåller "EmbeddedResource"-objekt från projektkatalogen som standard. Du kan antingen ta bort dessa objekt från projektfilen eller ange egenskapen EnableDefaultEmbeddedResourceItems till "false" om du uttryckligen vill inkludera dem i projektfilen.

Lös felen genom att göra något av följande:

  • Ta bort de explicita Compileobjekten , EmbeddedResourceeller None som matchar de implicita objekt som anges i föregående tabell.

  • Ange egenskapen EnableDefaultItems till för false att inaktivera all implicit filinkludering:

    <PropertyGroup>
      <EnableDefaultItems>false</EnableDefaultItems>
    </PropertyGroup>
    

    Om du vill ange filer som ska publiceras med din app kan du fortfarande använda de kända MSBuild-mekanismerna för det, till exempel elementet Content .

  • Inaktivera endast , eller globs selektivt genom att ange egenskapen EnableDefaultCompileItems, EnableDefaultEmbeddedResourceItems eller EnableDefaultNoneItems till false:NoneEmbeddedResourceCompile

    <PropertyGroup>
      <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
      <EnableDefaultEmbeddedResourceItems>false</EnableDefaultEmbeddedResourceItems>
      <EnableDefaultNoneItems>false</EnableDefaultNoneItems>
    </PropertyGroup>
    

    Om du bara inaktiverar Compile globs visar Solution Explorer i Visual Studio fortfarande *.cs objekt som en del av projektet, som ingår som None objekt. Om du vill inaktivera implicit None glob anger du EnableDefaultNoneItems till false också.

WPF-projekt

Du kan stöta på det här felet i ett WPF-projekt på grund av dubbletter ApplicationDefinition eller Page objekt. Du kan lösa felet genom att inaktivera standardobjekt med hjälp av en MSBuild-egenskap. Om du till exempel vill inaktivera standardobjekt Page i ett WPF-projekt anger du EnableDefaultPageItems till false:

<PropertyGroup>
  <EnableDefaultPageItems>false</EnableDefaultPageItems>
</PropertyGroup>

Mer information finns i Fel relaterade till duplicerade objekt (WPF).