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
元素)。可选择仅禁用
Compile
、EmbeddedResource
或None
glob,方法是将 EnableDefaultCompileItems、EnableDefaultEmbeddedResourceItems 或 EnableDefaultNoneItems 属性设置为false
:<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)”。