Megosztás a következőn keresztül:


NETSDK1022: Duplikált elemek lettek belefoglalva

Ez a cikk a következőre vonatkozik: ✔️ .NET Core 2.1.100 SDK és újabb verziók

A Visual Studio 2017/MSBuild 15.3-s verziójától kezdve a .NET SDK alapértelmezés szerint automatikusan tartalmazza a projektkönyvtár elemeit. Ezek az elemek magukban foglalják és Content célokat tartalmaznakCompile. Ez a viselkedés leegyszerűsíti a projektfájlokat.

Ha azonban explicit módon definiálja ezeket az elemeket a projektfájlban, valószínűleg az alábbihoz hasonló buildelési hibát fog kapni:

A program ismétlődő "Fordítás" elemeket tartalmazott. A .NET SDK alapértelmezés szerint tartalmazza a projektkönyvtár "Fordítás" elemeit. Eltávolíthatja ezeket az elemeket a projektfájlból, vagy az "EnableDefaultCompileItems" tulajdonságot "false" értékre állíthatja, ha explicit módon fel szeretné venni őket a projektfájlba.

A program ismétlődő "EmbeddedResource" elemeket tartalmazott. A .NET SDK alapértelmezés szerint tartalmazza az EmbeddedResource elemeket a projektkönyvtárból. Eltávolíthatja ezeket az elemeket a projektfájlból, vagy az "EnableDefaultEmbeddedResourceItems" tulajdonságot "false" értékre állíthatja, ha explicit módon fel szeretné venni őket a projektfájlba.

A hibák elhárításához tegye az alábbiak egyikét:

  • Távolítsa el az előző táblázatban felsorolt implicit elemeknek megfelelő explicit CompileEmbeddedResource, vagy None elemeket.

  • Az EnableDefaultItems tulajdonságfalse beállításával tiltsa le az összes implicit fájlbefoglalást:

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

    Ha meg szeretné adni az alkalmazással közzéteendő fájlokat, akkor is használhatja az ismert MSBuild mechanizmusokat, például az Content elemet.

  • Csak az NoneEmbeddedResourceEnableDefaultCompileItems, az EnableDefaultEmbeddedResourceItems vagy az EnableDefaultNoneItems tulajdonság falsebeállításával tiltsa le Compilea < a0/> parancsot:

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

    Ha csak a globokat tiltja leCompile, a Visual Studio Megoldáskezelő továbbra is *.cs elemeket jelenít meg a projekt részeként, elemekkéntNone. Az implicit None glob letiltásához állítsa be EnableDefaultNoneItems a következőt false is:

WPF-projektek

Ezt a hibát egy WPF-projektben duplikáció ApplicationDefinition vagy Page elemek miatt érheti el. A hiba megoldásához letilthatja az alapértelmezett elemeket egy MSBuild tulajdonság használatával. Ha például egy WPF-projekt alapértelmezett Page elemeit szeretné letiltani, állítsa a EnableDefaultPageItems következőre false:

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

További információ: Ismétlődő elemekhez (WPF) kapcsolódó hibák.