tutorial - asp.net mvc
Se incluyeron elementos duplicados de ''Contenido''. El SDK de.NET incluye elementos de ''Contenido'' del directorio de su proyecto de manera predeterminada (16)
Como
link
, puede deshabilitar este comportamiento (
csproj
) e incluir todo el contenido explícitamente al agregarlo a su archivo
csproj
:
<PropertyGroup>
<EnableDefaultContentItems>false</EnableDefaultContentItems>
</PropertyGroup>
Cada vez que agrego un archivo javascript o css a mi proyecto asp.net core y ejecuto
dotnet run
en mi terminal bash, aparece el siguiente error:
/usr/share/dotnet/sdk/1.0.1/Sdks/Microsoft.NET.Sdk/build/Microsoft
.NET.Sdk.DefaultItems.targets (188,5): error: se incluyeron elementos duplicados de ''Contenido''. El SDK de .NET incluye elementos de ''Contenido'' del directorio de su proyecto de manera predeterminada. Puede eliminar estos elementos de su archivo de proyecto o establecer la propiedad ''EnableDefaultContentItems'' en ''false'' si desea incluirlos explícitamente en su archivo de proyecto. Para obtener más información, consulte https://aka.ms/sdkimplicititems . Los elementos duplicados fueron: ''wwwroot / css / BasicQuotation.css''; ''wwwroot / js / BasicQuotation.js'' [/mnt/c/Dev/myproject/MyProject/MyProject.csproj]
La construcción falló. Por favor, corrija los errores de compilación y vuelva a ejecutar.
Puedo solucionar esto eliminando el
ItemGroup
de mi archivo csproj, pero no creo que sea muy productivo.
Esto sucede en la plantilla predeterminada de la aplicación web ASP.NET Core de Visual Studio 2017 (.NET Core).
Agrego los archivos a mi proyecto haciendo clic derecho en la carpeta wwwroot> js y luego selecciono
Add > New Item > JavaScript File
Este es mi archivo .csproj:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp1.1</TargetFramework>
</PropertyGroup>
<PropertyGroup>
<PackageTargetFallback>$(PackageTargetFallback);portable-net45+win8+wp8+wpa81;</PackageTargetFallback>
</PropertyGroup>
<PropertyGroup>
<UserSecretsId>aspnet-MyProject-7e1906d8-5dbd-469a-b237-d7a563081253</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<Compile Remove="wwwroot/lib/jquery-validation/**" />
<Content Remove="wwwroot/lib/jquery-validation/**" />
<EmbeddedResource Remove="wwwroot/lib/jquery-validation/**" />
<None Remove="wwwroot/lib/jquery-validation/**" />
</ItemGroup>
<ItemGroup>
<Content Include="wwwroot/css/BasicQuotation.css" />
<Content Include="wwwroot/js/BasicQuotation.js" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.1.1" PrivateAssets="All" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="1.1.1" PrivateAssets="All" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.0" PrivateAssets="All" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="1.1.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.1" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="1.1.0" PrivateAssets="All" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" />
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="1.0.0" />
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0" />
</ItemGroup>
<ItemGroup>
<Folder Include="Data/Commands/" />
<Folder Include="Data/Queries/" />
<Folder Include="wwwroot/images/" />
</ItemGroup>
</Project>
Creo que deshabilitar "EnableDefaultContentItems" no es la mejor opción.
La edición manual
cs-Proj
archivos
cs-Proj
tampoco es una buena idea.
Entonces, para nuestro canal de servidores de compilación, escribimos una herramienta muy pequeña que eliminará todas las entradas duplicadas automáticamente: dotnet-csproj-cleaner
Lo ejecutamos en Docker como el primer paso de compilación en nuestra tubería de integración continua.
En Visual Studio 2017 15.3, con .NET Core 2.0, EnableDefaultCompileItems no funcionó para mí.
Necesitaba agregar esto a mi .csproj
<PropertyGroup>
<EnableDefaultContentItems>false</EnableDefaultContentItems>
</PropertyGroup>
En mi caso, resolví esto eliminando todos los archivos del directorio wwwroot en VS. Descargue y vuelva a cargar el proyecto. Copie todos los archivos nuevamente con VS. Hecho
En realidad, el núcleo de Asp.net incluye automáticamente contenido de
wwwroot/css/
,
wwwroot/js/
y
wwwroot/lib/
location, por lo que a pesar de esto, si su archivo
csproj
incluye explícitamente contenido de esos directorios, ese contenido se duplicará, por lo que se eliminará el contenido de usted
csproj
archivo
csproj
es la mejor manera de deshacerse de este error.
Así que elimine el contenido a continuación
<ItemGroup>
<Compile Remove="wwwroot/lib/jquery-validation/**" />
<Content Remove="wwwroot/lib/jquery-validation/**" />
<EmbeddedResource Remove="wwwroot/lib/jquery-validation/**" />
<None Remove="wwwroot/lib/jquery-validation/**" />
</ItemGroup>
<ItemGroup>
<Content Include="wwwroot/css/BasicQuotation.css" />
<Content Include="wwwroot/js/BasicQuotation.js" />
</ItemGroup>
Encontré una solución adecuada diferente.
- Haga clic derecho en su proyecto mvc y haga clic en Editar csproj.
- Si está agregando archivos en wwwroot, simplemente muévalos a una carpeta en wwwroot, digamos "tema"
Y elimine todas las etiquetas de contenido en el archivo csproj si existe, un ejemplo;
<Content Include="wwwroot/theme/favicon.ico" />
<Content Include="wwwroot/theme/fonts/cyrillic-ext400.woff2" />
<Content Include="wwwroot/theme/fonts/cyrillic-ext700.woff2" />
Y solo agrega esto;
<ItemGroup>
<Folder Include="wwwroot/theme/" />
</ItemGroup>
Entonces, el archivo csproj debería verse así;
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp1.1</TargetFramework>
</PropertyGroup>
<PropertyGroup>
<PackageTargetFallback>$(PackageTargetFallback);portable-net45+win8+wp8+wpa81;</PackageTargetFallback>
</PropertyGroup>
<ItemGroup>
<Folder Include="wwwroot/theme/" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.0" />
...
De esa manera, creo que está agregando todos los archivos en la carpeta de temas. Por lo tanto, no los incluya uno por uno, lo que produce algunos errores.
Entonces me encontré con este mismo problema. No quería desactivar DefaultCompileItems porque sabía que eso no "solucionaría" el problema. Así que descargué mi proyecto y abrí el archivo .csproj en modo texto en Visual Studio y vi esto.
<ItemGroup>
<Content Include="wwwroot/css/custom-bootstrap-navbar.css" />
<Content Include="wwwroot/images/friends-eating/image1.jpg" />
<Content Include="wwwroot/images/friends-eating/image2.jpg" />
<Content Include="wwwroot/images/friends-eating/image3.jpg" />
</ItemGroup>
<ItemGroup>
<Folder Include="wwwroot/images/friends-eating/" />
</ItemGroup>
Cuando comenté el primer bloque de ItemGroup, funcionó. Lo que supongo que está sucediendo es que el proyecto agrega toda la carpeta / images / friends-eating / y luego agrega cada imagen individual, causando una duplicación.
En cuanto a los css y js personalizados, el proyecto agrega automáticamente wwwroot / css y wwwroot / js, por lo que si tiene un archivo individual agregado (como wwwroot / css / custom-bootstrap-navbar.css) contará como un duplicado.
Esto funcionó en mi caso:
<PropertyGroup>
...
<EnableDefaultContentItems>false</EnableDefaultContentItems>
</PropertyGroup>
Excluir e incluir de nuevo las carpetas que tienen errores duplicados funcionó para mí. ¡Espero que esto ayude a alguien más!
Mi caso es deshabilitar los dos elementos predeterminados a continuación.
<EnableDefaultContentItems>false</EnableDefaultContentItems>
<EnableDefaultItems>false</EnableDefaultItems>
Mis problemas estaban cerca pero no exactamente lo mismo. Mi error fue este:
C: / Archivos de programa / dotnet / sdk / 2.0.0-preview2-006497 / Sdks / Microsoft.NET.Sdk / build / Microsoft.NET.Sdk.DefaultItems.targets (285,5): error: Duplicar elementos de ''Contenido'' se incluyeron. El SDK de .NET incluye elementos de ''Contenido'' del directorio de su proyecto de manera predeterminada. Puede eliminar estos elementos de su archivo de proyecto o establecer la propiedad ''EnableDefaultContentItems'' en ''false'' si desea incluirlos explícitamente en su archivo de proyecto. Para obtener más información, consulte https://aka.ms/sdkimplicititems . Los elementos duplicados fueron: ''wwwroot / js / KOBindings.js''; ''wwwroot / js / KOPleaseWait.js''; ''wwwroot / js / ProjectTime / Add.js''; ''wwwroot / js / TimeAdmin / Invoice.js''; ''wwwroot / js / TimeAdmin / PayPeriodTotals.js'' [C: / Avantia Projects / Time Card / avantia-timesheet / Solution / Almanac / Almanac.csproj]
Si hiciera esto:
<EnableDefaultContentItems>false</EnableDefaultContentItems>
No se compilaría ya que no se reconocerían todas las
Areas
repentinas.
Mi solución parece extraña, pero el mensaje me dice que había archivos duplicados:
Los elementos duplicados fueron: ''wwwroot / js / KOBindings.js''; ''wwwroot / js / KOPleaseWait.js''; ''wwwroot / js / ProjectTime / Add.js''; ''wwwroot / js / TimeAdmin / Invoice.js''; ''wwwroot / js / TimeAdmin / PayPeriodTotals.js''
Mirando mi archivo
.csproj
:
<ItemGroup>
<Content Include="pdf.js" />
<Content Include="wwwroot/js/package.json" />
<Content Include="wwwroot/js/pdf.js" />
<Content Include="wwwroot/js/KOBindings.js" />
<Content Include="wwwroot/js/KOPleaseWait.js" />
<Content Include="wwwroot/js/ProjectTime/Add.js" />
<Content Include="wwwroot/js/TimeAdmin/Invoice.js" />
<Content Include="wwwroot/js/TimeAdmin/PayPeriodTotals.js" />
</ItemGroup>
Esta fue la ÚNICA ubicación dentro de todo el proyecto donde estos archivos eran referencias (aparte de donde se cargaron). Por lo tanto, la frase duplicada no tiene ningún sentido para mí. Sin embargo, comentar esos archivos como tales, se encargó de mi problema:
<ItemGroup>
<Content Include="pdf.js" />
<Content Include="wwwroot/js/package.json" />
<Content Include="wwwroot/js/pdf.js" />
<!--
<Content Include="wwwroot/js/KOBindings.js" />
<Content Include="wwwroot/js/KOPleaseWait.js" />
<Content Include="wwwroot/js/ProjectTime/Add.js" />
<Content Include="wwwroot/js/TimeAdmin/Invoice.js" />
<Content Include="wwwroot/js/TimeAdmin/PayPeriodTotals.js" />
-->
</ItemGroup>
Supongo que esto tiene algo que ver con el
2.0.0-preview2-006497
que
2.0.0-preview2-006497
recientemente.
Además, este
link
menciona conversaciones sobre globs.
Pero no me dice dónde está eso.
Habla de SDK y tal.
Sin embargo, la respuesta fueron mis archivos
.js
personalizados.
Ese enlace debe actualizarse o ampliarse en mi humilde opinión.
Espero que esto ayude a alguien.
No es que pueda verlo en su ejemplo anterior, para ayudar a otros buscadores de SO.
También puede obtener este error cuando tiene el mismo archivo listado dos veces en los elementos
<Content Include="xxx" />
en su archivo
csproj
.
Eliminar el duplicado y reconstruir.
Sucedió cuando actualicé mi proyecto de .NET Core 1.X a 2.0 en este momento. Aquí está mi solución.
- Abra xxx.csproj o haga clic con el botón derecho en el proyecto.
- Descargar proyecto
- Edite xxx.csproj.
Luego, elimine los elementos de ItemGroup que comiencen con
<Content Include = "wwwroot/xxxxx"
Tuve el mismo problema con solo un archivo, y todos los demás estaban funcionando (todas mis plantillas se almacenaron directamente en wwwroot / content). El proyecto no fue creado por mí, así que no conozco muchos detalles.
El problema se solucionó cambiando el nombre del archivo con el problema:
MyTemplate.html - renombrado -> MyTemplate2.html - renombrado -> MyTemplate.html
Nota : En el primer cambio de nombre, recibí un error con algo similar a " configuración de contenido no encontrada ", pero el segundo cambio de nombre funcionó sin problemas.
Después de esto pude compilar el proyecto con éxito.
Proyectos principales de .NET
Si está en una biblioteca de clase, probablemente necesitará eliminar todos los elementos de compilación / contenido de su csproj, ya que se incluyen automáticamente.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<!-- NEEDED -->
<ItemGroup>
<ProjectReference />
<ProjectReference />
</ItemGroup>
<!-- NOT NEEDED -->
<ItemGroup>
<Compile Include="Models/ExampleClass.cs" />
<Content ... />
</ItemGroup>
</Project>
1. Click ''Show All Files'' in Solution Explorer
2. Right-click over ''wwwroot'' select ''Exclude From Project''
3. Right-click over ''wwwroot'' select ''Include in Project''