NETSDK1022: se han incluido elementos duplicados
Este artículo se aplica a: ✔️ SDK de .NET Core 2.1.100 y versiones posteriores
A partir de Visual Studio 2017 y MSBuild, versión 15.3, el SDK de .NET incluye automáticamente los elementos del directorio del proyecto de forma predeterminada. Estos elementos incluyen destinos Compile
y Content
. Este comportamiento simplifica los archivos del proyecto.
Sin embargo, si define explícitamente cualquiera de estos elementos en el archivo del proyecto, es probable que obtenga un error de compilación similar al siguiente:
Se han incluido elementos de compilación duplicados. El SDK de .NET incluye elementos de compilación del directorio del proyecto de forma predeterminada. Puede quitar estos elementos del archivo del proyecto, o bien establecer la propiedad "EnableDefaultCompileItems" en "false" si quiere incluirlos de forma explícita en el archivo del proyecto.
Se incluyeron elementos "EmbeddedResource" duplicados. El SDK de .NET incluye elementos "EmbeddedResource" del directorio del proyecto de forma predeterminada. Puede quitar estos elementos del archivo del proyecto, o bien establecer la propiedad "EnableDefaultEmbeddedResourceItems" en "false" si quiere incluirlos en él de forma explícita.
Para resolver los errores, lleve a cabo una de las siguientes acciones:
Quite los elementos
Compile
,EmbeddedResource
oNone
explícitos que coincidan con los implícitos enumerados en la tabla anterior.Establezca la propiedad EnableDefaultItems en
false
para deshabilitar toda la inclusión de archivos implícita:<PropertyGroup> <EnableDefaultItems>false</EnableDefaultItems> </PropertyGroup>
Si quiere especificar que se publiquen archivos con la aplicación, puede seguir usando los mecanismos de MSBuild conocidos para ello, por ejemplo, el elemento
Content
.Deshabilite de forma selectiva solo los globs
Compile
,EmbeddedResource
oNone
mediante el establecimiento de la propiedad EnableDefaultCompileItems, EnableDefaultEmbeddedResourceItems o EnableDefaultNoneItems enfalse
:<PropertyGroup> <EnableDefaultCompileItems>false</EnableDefaultCompileItems> <EnableDefaultEmbeddedResourceItems>false</EnableDefaultEmbeddedResourceItems> <EnableDefaultNoneItems>false</EnableDefaultNoneItems> </PropertyGroup>
Si solo deshabilita los globs
Compile
, el Explorador de soluciones de Visual Studio sigue mostrando elementos *.cs como parte del proyecto, incluidos como elementosNone
. Para deshabilitar el globNone
implícito, establezcaEnableDefaultNoneItems
enfalse
.
Proyectos de WPF
Es posible que este error se produzca en un proyecto de WPF debido a elementos ApplicationDefinition
o Page
duplicados. Para resolver el error, puede deshabilitar los elementos predeterminados con una propiedad de MSBuild. Por ejemplo, para deshabilitar los elementos Page
predeterminados en un proyecto de WPF, establezca EnableDefaultPageItems
en false
:
<PropertyGroup>
<EnableDefaultPageItems>false</EnableDefaultPageItems>
</PropertyGroup>
Para obtener más información, consulte Errores relacionados con elementos duplicados (WPF).