分享方式:


NETSDK1022:已包括重複的項目

本文適用於:✔️ .NET Core 2.1.100 SDK 與更新版本

從 Visual Studio 2017/MSBuild 15.3 版開始,.NET SDK 預設會自動包括專案目錄中的項目。 這些項目包括 CompileContent 目標。 此行為可簡化專案檔。

不過,如果您在專案檔中明確定義這些項目中的任何一項,則可能會收到類似於以下內容的建置錯誤:

已包含重複的「編譯」項目。 .NET SDK 預設會包含您專案目錄中的「編譯」項目。 您可以從專案檔中移除這些項目;如果您想要在專案檔中明確包含這些項目,您可以將 'EnableDefaultCompileItems' 屬性設定為 'false'。

已包含重複的 'EmbeddedResource' 項目。 預設情況下,.NET SDK 包含您的專案目錄中的 'EmbeddedResource' 項目。 您可以從專案檔中移除這些項目;如果您想要在專案檔中明確包含這些項目,您可以將 'EnableDefaultEmbeddedResourceItems' 屬性設定為 'false'。

若要解決錯誤,請執行下列任一種方法:

  • 移除與上表所列之隱含項目相符的明確 CompileEmbeddedResourceNone 項目。

  • EnableDefaultItems 屬性設為 false,以停用所有隱含的檔案包含:

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

    若您想要將檔案指定為與應用程式一同發佈,仍可以使用已知的 MSBuild 機制來達成該目的,例如 Content 元素。

  • 透過將 EnableDefaultCompileItemsEnableDefaultEmbeddedResourceItemsEnableDefaultNoneItems 屬性設為 false 來選擇性地僅停用 CompileEmbeddedResourceNone 全域項目 (glob):

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

    若您只停用 Compile Glob,Visual Studio 內的方案總管仍會在專案中顯示 *.cs 項目,並將其包含為 None 項目。 若要停用隱含 None Glob,請也將 EnableDefaultNoneItems 設為 false

WPF 專案

由於重複的 ApplicationDefinitionPage 項目,您可能會在 WPF 專案中遇到此錯誤。 若要解決此錯誤,您可以使用 MSBuild 屬性來停用預設的項目。 例如,若要停用 WPF 專案中的預設 Page 項目,請將 EnableDefaultPageItems 設定為 false

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

如需詳細資訊,請參閱與重複項目相關的錯誤 (WPF)