Поделиться через


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, задайте значение falseEnableDefaultPageItems :

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

Дополнительные сведения см. в разделе Об ошибках, связанных с повторяющимися элементами (WPF).