Share via


NETSDK1022: 重複する項目が含まれていました

この記事の対象: ✔️ .NET Core 2.1.100 SDK 以降のバージョン

Visual Studio 2017 または MSBuild バージョン 15.3 以降、.NET SDK に既定でプロジェクト ディレクトリの項目が自動的に含まれています。 これらの項目には、CompileContent ターゲットが含まれます。 この動作により、プロジェクト ファイルが簡略化されます。

ただし、これらの項目をプロジェクト ファイルに明示的に定義すると、次のようなビルド エラーが発生する可能性があります:

重複する 'Compile' 項目が含まれていました。 .NET SDK には、既定でプロジェクト ディレクトリの 'Compile' 項目が含まれています。 これらの項目をプロジェクト ファイルから削除するか、プロジェクト ファイルに明示的に含める場合は 'EnableDefaultCompileItems' プロパティを 'false' に設定することができます。

重複する 'EmbeddedResource' 項目が含まれていました。 .NET SDK には、既定でプロジェクト ディレクトリの 'EmbeddedResource' 項目が含まれています。 これらの項目をプロジェクト ファイルから削除するか、プロジェクト ファイルに明示的に含める場合は 'EnableDefaultEmbeddedResourceItems' プロパティを 'false' に設定することができます。

このエラーを解決するには、次のいずれかの操作を行います。

  • 前の表に列挙されている暗黙的な項目と一致する明示的な CompileEmbeddedResource、または None の項目を削除します。

  • 暗黙的なファイルの組み込みをすべて無効にするには、EnableDefaultItems プロパティfalse に設定します。

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

    アプリで発行する一部のファイルを指定する必要がある場合は、そのために既知の MSBuild のしくみ (たとえば Content 要素) を引き続き使用できます。

  • CompileEmbeddedResource、または None glob を選択的に無効にするには、EnableDefaultCompileItemsEnableDefaultEmbeddedResourceItems、または EnableDefaultNoneItems プロパティを false に設定します。

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

    Compile glob のみを無効にすると、Visual Studio のソリューション エクスプローラーに *.cs 項目がプロジェクトの一部として (None 項目として組み込まれて) 引き続き表示されます。 暗黙的な None glob を無効にするには、EnableDefaultNoneItemsfalse に設定します。

WPF プロジェクト

ApplicationDefinition または Page 項目が重複しているために、WPF プロジェクトでこのエラーが発生する場合があります。 このエラーを解決するには、MSBuild プロパティを使用して既定の項目を無効にできます。 たとえば、WPF プロジェクトの既定の Page 項目を無効にするには、EnableDefaultPageItemsfalse に設定します:

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

詳細については、「重複する項目に関連するエラー (WPF)」を参照してください。