NETSDK1022: Foram incluídos itens duplicados

Este artigo aplica-se a: ✔️ SDK do .NET Core 2.1.100 e versões posteriores

A partir do Visual Studio 2017 / MSBuild versão 15.3, o SDK do .NET inclui automaticamente itens do diretório do projeto por padrão. Esses itens incluem Compile e Content alvos. Esse comportamento simplifica os arquivos de projeto.

No entanto, se você definir explicitamente qualquer um desses itens em seu arquivo de projeto, é provável que obtenha um erro de compilação semelhante ao seguinte:

Foram incluídos itens 'Compilar' duplicados. O SDK do .NET inclui itens 'Compilar' do diretório do seu projeto por padrão. Você pode remover esses itens do arquivo de projeto ou definir a propriedade 'EnableDefaultCompileItems' como 'false' se quiser incluí-los explicitamente no arquivo de projeto.

Foram incluídos itens 'EmbeddedResource' duplicados. O SDK do .NET inclui itens 'EmbeddedResource' do diretório do projeto por padrão. Você pode remover esses itens do arquivo de projeto ou definir a propriedade 'EnableDefaultEmbeddedResourceItems' como 'false' se quiser incluí-los explicitamente no arquivo de projeto.

Para resolver os erros, siga um destes procedimentos:

  • Remova os itens explícitos Compile, EmbeddedResourceou None que correspondam aos implícitos listados na tabela anterior.

  • Defina a propriedade EnableDefaultItems para false desabilitar toda a inclusão implícita de arquivos:

    <PropertyGroup>
      <EnableDefaultItems>false</EnableDefaultItems>
    </PropertyGroup>
    

    Se você quiser especificar arquivos a serem publicados com seu aplicativo, ainda poderá usar os mecanismos conhecidos do MSBuild para isso, por exemplo, o Content elemento .

  • Desative seletivamente apenas , ou globs definindo a propriedade EnableDefaultCompileItems, EnableDefaultEmbeddedResourceItems ou EnableDefaultNoneItems como false:NoneEmbeddedResourceCompile

    <PropertyGroup>
      <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
      <EnableDefaultEmbeddedResourceItems>false</EnableDefaultEmbeddedResourceItems>
      <EnableDefaultNoneItems>false</EnableDefaultNoneItems>
    </PropertyGroup>
    

    Se você desabilitar Compile apenas globs, o Gerenciador de Soluções no Visual Studio ainda mostrará itens *.cs como parte do projeto, incluídos como None itens. Para desativar o glob implícito None , defina EnableDefaultNoneItems também false .

Projetos WPF

Você pode acertar esse erro em um projeto WPF devido a duplicados ApplicationDefinition ou Page itens. Para resolver o erro, você pode desabilitar itens padrão usando uma propriedade MSBuild. Por exemplo, para desabilitar itens padrão Page em um projeto WPF, defina EnableDefaultPageItems como false:

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

Para obter mais informações, consulte Erros relacionados a itens duplicados (WPF).