本文適用於:✔️ .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>若您只停用
CompileGlob,Visual Studio 內的方案總管仍會在專案中顯示 *.cs 項目,並將其包含為None項目。 若要停用隱含NoneGlob,請也將EnableDefaultNoneItems設為false。
WPF 專案
由於重複的 ApplicationDefinition 或 Page 項目,您可能會在 WPF 專案中遇到此錯誤。 若要解決此錯誤,您可以使用 MSBuild 屬性來停用預設的項目。 例如,若要停用 WPF 專案中的預設 Page 項目,請將 EnableDefaultPageItems 設定為 false:
<PropertyGroup>
<EnableDefaultPageItems>false</EnableDefaultPageItems>
</PropertyGroup>
如需詳細資訊,請參閱與重複項目相關的錯誤 (WPF)。