NETSDK1022: были включены повторяющиеся элементы
Эта статья относится к: ✔️ пакету SDK для .NET Core 2.1.100 и более поздних версий
Начиная с Visual Studio 2017 или MSBuild версии 15.3 пакет SDK для .NET автоматически включает элементы из каталога проекта по умолчанию. Эти элементы включают Compile
и Content
целевые объекты. Это упрощает файлы проекта.
Однако если вы явно определяете любой из этих элементов в файле проекта, скорее всего, вы получите ошибку сборки, аналогичную следующей:
"Duplicate 'Compile' items were included. The .NET SDK includes Compile items from your project directory by default. You can either remove these items from your project file, or set the 'EnableDefaultCompileItems' property to 'false' if you want to explicitly include them in your project file. (Включены повторяющиеся элементы Compile. По умолчанию пакет SDK для .NET включает элементы Compile из каталога проекта. Можно удалить эти элементы из файла проекта или задать для свойства EnableDefaultCompileItems значение false, чтобы явно включить их в файл проекта).
"Duplicate 'EmbeddedResource' items were included. The .NET SDK includes 'EmbeddedResource' items from your project directory by default. You can either remove these items from your project file, or set the 'EnableDefaultEmbeddedResourceItems' property to 'false' if you want to explicitly include them in your project file" (Включены повторяющиеся элементы EmbeddedResource. По умолчанию пакет SDK для .NET включает элементы EmbeddedResource из каталога проекта. Можно удалить эти элементы из файла проекта или задать для свойства EnableDefaultEmbeddedResourceItems значение false, чтобы явно включить их в файл проекта).
Чтобы устранить такую проблему, выполните любое из следующих действий:
Удалите явно заданные элементы
Compile
,EmbeddedResource
илиNone
, которые совпадают с неявно заданными параметрами из предыдущей таблицы.Присвойте свойству EnableDefaultItems значение
false
, чтобы отключить все неявные включения файлов:<PropertyGroup> <EnableDefaultItems>false</EnableDefaultItems> </PropertyGroup>
Если вы хотите указать файлы, которые нужно публиковать вместе с приложением, для этого можно по-прежнему использовать привычные механизмы MSBuild (например, элемент
Content
).Выборочно отключите только стандартные маски
Compile
,EmbeddedResource
илиNone
, присвоив свойствам EnableDefaultCompileItems, EnableDefaultEmbeddedResourceItems или EnableDefaultNoneItems значениеfalse
:<PropertyGroup> <EnableDefaultCompileItems>false</EnableDefaultCompileItems> <EnableDefaultEmbeddedResourceItems>false</EnableDefaultEmbeddedResourceItems> <EnableDefaultNoneItems>false</EnableDefaultNoneItems> </PropertyGroup>
Если вы отключаете
Compile
только глобы, Обозреватель решений в Visual Studio по-прежнему отображаются элементы *.cs в составе проекта, включенные в качествеNone
элементов. Чтобы отключить неявную стандартную маскуNone
, задайте свойствуEnableDefaultNoneItems
значениеfalse
.
Проекты WPF
Эта ошибка может возникнуть в проекте WPF из-за дублирования ApplicationDefinition
или Page
элементов. Чтобы устранить ошибку, можно отключить элементы по умолчанию с помощью свойства MSBuild. Например, чтобы отключить элементы по умолчанию Page
в проекте WPF, задайте значение false
EnableDefaultPageItems
:
<PropertyGroup>
<EnableDefaultPageItems>false</EnableDefaultPageItems>
</PropertyGroup>
Дополнительные сведения см. в разделе Об ошибках, связанных с повторяющимися элементами (WPF).