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 solucionarlo eliminando el ItemGroup
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 seleccionoAdd > 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>
Respuestas:
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 de texto en Visual Studio y vi esto.
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.
fuente
<Folder Include="wwwroot\" />
funciona para mí, pero Visual Studio deshace eso más adelante :(fuente
Esto funcionó en mi caso:
fuente
Sucedió cuando actualicé mi proyecto de .NET Core 1.X a 2.0 en este momento. Aquí está mi solución.
Luego, elimine los elementos de ItemGroup que comienzan con
<Content Include = "wwwroot\xxxxx"
fuente
Mis problemas estaban cerca pero no exactamente lo mismo. Mi error fue este:
Si hiciera esto:
No se compilaría ya que de repente
Areas
no se reconocería.Mi solución parece extraña, pero el mensaje me dice que había archivos duplicados:
Mirando mi
.csproj
archivo: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, al comentar esos archivos como tales, se ocupó de mi problema:
Supongo que esto tiene algo que ver con lo
2.0.0-preview2-006497
que instalé recientemente.Además, este enlace menciona conversaciones sobre globs. Pero no me dice dónde está eso. Habla de SDK y tal. Sin embargo, la respuesta fueron mis
.js
archivos personalizados . Ese enlace debe actualizarse o ampliarse en mi humilde opinión. Espero que esto ayude a alguien.fuente
Como dice el enlace , puede deshabilitar este comportamiento (incluir automáticamente) e incluir todo el contenido explícitamente agregando esto a su
csproj
archivo:fuente
CSC : error CS5001: Program does not contain a static 'Main' method suitable for an entry point [/mnt/c/Dev/myproject/MyProject/MyProject.csproj] The build failed. Please fix the build errors and run again.
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
fuente
En realidad, Asp.net núcleo incluyen de forma automática el contenido de
wwwroot\css\
,wwwroot\js\
ywwwroot\lib\
ubicación, así que a pesar de esto si sucsproj
archivo de incluir explícitamente el contenido de esos directorios a continuación, los contenidos se duplicará lo que la eliminación de contenido quecsproj
el archivo es la mejor manera de deshacerse de este error. Así que elimine el contenido a continuaciónfuente
<PropertyGroup> <EnableDefaultContentItems>false</EnableDefaultContentItems> </PropertyGroup>
al archivo .csproj.EnableDefaultContentItems
o no. Son dos enfoques diferentesMi caso es deshabilitar los dos elementos predeterminados a continuación.
fuente
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
<Content Include="xxx" />
elementos en sucsproj
archivo.Eliminar el duplicado y reconstruir.
fuente
En Visual Studio 2017 15.3, con .NET Core 2.0, EnableDefaultCompileItems no funcionó para mí.
Necesitaba agregar esto a mi .csproj
fuente
Encontré una solución adecuada diferente.
Y elimine todas las etiquetas de contenido en el archivo csproj si existe, un ejemplo;
Y solo agrega esto;
Entonces, el archivo csproj debería verse así;
De esa manera, creo que está agregando todos los archivos en la carpeta de temas. Por lo tanto, no los incluya uno por uno, ya que se producen algunos errores.
fuente
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.
fuente
¡Excluir e incluir las carpetas que tienen errores de duplicados funcionó para mí! ¡Espero que esto ayude a alguien más!
fuente
Creo que deshabilitar "EnableDefaultContentItems" no es la mejor opción. La
cs-Proj
edición manual de archivos 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.
fuente
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.
fuente