Condividi tramite


NETSDK1022: sono inclusi elementi duplicati

Questo articolo si applica a: ✔️ SDK .NET Core 2.1.100 e versioni successive

A partire da Visual Studio 2017 / MSBuild versione 15.3, .NET SDK include automaticamente gli elementi della directory del progetto per impostazione predefinita. Questi elementi includono le destinazioni Compile e Content. Questo comportamento semplifica i file di progetto.

Tuttavia, se si definisce in modo esplicito uno di questi elementi nel file di progetto, è probabile che venga visualizzato un errore di compilazione simile al seguente:

Sono inclusi elementi “Compile” duplicati. L’SDK .NET include gli elementi “Compile” dalla directory del progetto per impostazione predefinita. 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. (Rimuovere questi elementi dal file di progetto o impostare la proprietà 'EnableDefaultCompileItems' su 'false' se li si vuole includere esplicitamente nel file di progetto)

Sono inclusi elementi “EmbeddedResource” duplicati. L’SDK .NET include gli elementi “EmbeddedResource” dalla directory del progetto per impostazione predefinita. È possibile rimuovere questi elementi dal file di progetto oppure impostare la proprietà “EnableDefaultEmbeddedResourceItems” su “false” se si desidera includerli in modo esplicito nel file di progetto.

Per risolvere gli errori, eseguire una delle operazioni seguenti:

  • Rimuovere gli elementi espliciti Compile, EmbeddedResource o None corrispondenti a quelli impliciti elencati nella tabella precedente.

  • Impostare la proprietà EnableDefaultItems su false per disabilitare l'inclusione implicita di tutti i file:

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

    Se si vogliono specificare i file da pubblicare con l'app, è comunque possibile usare i meccanismi di MSBuild noti a tale scopo, ad esempio l'elemento Content.

  • Disabilitare in modo selettivo solo i glob Compile, EmbeddedResource o None impostando la proprietà EnableDefaultCompileItems, EnableDefaultEmbeddedResourceItems oppure EnableDefaultNoneItems su false:

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

    Se si disabilitano solo i glob Compile, Esplora soluzioni in Visual Studio visualizza ancora elementi *.cs come parte del progetto, inclusi come elementi None. Per disabilitare il glob None implicito, impostare anche EnableDefaultNoneItems su false.

Progetti WPF

Questo errore potrebbe verificarsi in un progetto WPF a causa di elementi ApplicationDefinition o Page duplicati. Per risolvere l’errore, è possibile disabilitare gli elementi predefiniti usando una proprietà MSBuild. Ad esempio, per disabilitare gli elementi Page predefiniti in un progetto WPF, impostare EnableDefaultPageItems su false:

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

Per altre informazioni, vedere Errori correlati a elementi duplicati (WPF).