NETSDK1022:已包括重複的項目
本文適用於:✔️ .NET Core 2.1.100 SDK 與更新版本
從 Visual Studio 2017/MSBuild 15.3 版開始,.NET SDK 預設會自動包括專案目錄中的項目。 這些項目包括 Compile
和 Content
目標。 此行為可簡化專案檔。
不過,如果您在專案檔中明確定義這些項目中的任何一項,則可能會收到類似於以下內容的建置錯誤:
已包含重複的「編譯」項目。 .NET SDK 預設會包含您專案目錄中的「編譯」項目。 您可以從專案檔中移除這些項目;如果您想要在專案檔中明確包含這些項目,您可以將 'EnableDefaultCompileItems' 屬性設定為 'false'。
已包含重複的 'EmbeddedResource' 項目。 預設情況下,.NET SDK 包含您的專案目錄中的 'EmbeddedResource' 項目。 您可以從專案檔中移除這些項目;如果您想要在專案檔中明確包含這些項目,您可以將 'EnableDefaultEmbeddedResourceItems' 屬性設定為 'false'。
若要解決錯誤,請執行下列任一種方法:
移除與上表所列之隱含項目相符的明確
Compile
、EmbeddedResource
或None
項目。將 EnableDefaultItems 屬性設為
false
,以停用所有隱含的檔案包含:<PropertyGroup> <EnableDefaultItems>false</EnableDefaultItems> </PropertyGroup>
若您想要將檔案指定為與應用程式一同發佈,仍可以使用已知的 MSBuild 機制來達成該目的,例如
Content
元素。透過將 EnableDefaultCompileItems、EnableDefaultEmbeddedResourceItems 或 EnableDefaultNoneItems 屬性設為
false
來選擇性地僅停用Compile
、EmbeddedResource
或None
全域項目 (glob):<PropertyGroup> <EnableDefaultCompileItems>false</EnableDefaultCompileItems> <EnableDefaultEmbeddedResourceItems>false</EnableDefaultEmbeddedResourceItems> <EnableDefaultNoneItems>false</EnableDefaultNoneItems> </PropertyGroup>
若您只停用
Compile
Glob,Visual Studio 內的方案總管仍會在專案中顯示 *.cs 項目,並將其包含為None
項目。 若要停用隱含None
Glob,請也將EnableDefaultNoneItems
設為false
。
WPF 專案
由於重複的 ApplicationDefinition
或 Page
項目,您可能會在 WPF 專案中遇到此錯誤。 若要解決此錯誤,您可以使用 MSBuild 屬性來停用預設的項目。 例如,若要停用 WPF 專案中的預設 Page
項目,請將 EnableDefaultPageItems
設定為 false
:
<PropertyGroup>
<EnableDefaultPageItems>false</EnableDefaultPageItems>
</PropertyGroup>
如需詳細資訊,請參閱與重複項目相關的錯誤 (WPF)。