153 votes

Des éléments de "contenu" en double ont été inclus. Le SDK .NET inclut par défaut les éléments "Content" du répertoire de votre projet.

Chaque fois que j'ajoute un fichier javascript ou css à mon projet asp.net core et que j'exécute dotnet run dans mon terminal bash, j'obtiens l'erreur suivante :

/usr/share/dotnet/sdk/1.0.1/Sdks/Microsoft.NET.Sdk/build/Microsoft

.NET.Sdk.DefaultItems.targets(188,5) : error : Duplicate 'Content'. ont été inclus. Le SDK .NET inclut les éléments 'Content' de votre répertoire de projet par défaut. Vous pouvez soit supprimer ces éléments de votre votre fichier de projet ou définir la propriété "EnableDefaultContentItems" sur "false" si vous false " si vous souhaitez les inclure explicitement dans votre fichier de projet. Pour plus d'informations, voir https://aka.ms/sdkimplicititems . Le site éléments en double étaient : 'wwwroot/css/BasicQuotation.css' ; wwwroot/js/BasicQuotation.js [/mnt/c/Dev/myproject/MyProject/MyProject.csproj]

La construction a échoué. Veuillez corriger les erreurs de construction et recommencer.

Je peux résoudre ce problème en supprimant le ItemGroup de mon fichier csproj, mais je ne pense pas que ce soit très productif.

Cela se produit dans le modèle par défaut de Visual Studio 2017 ASP.NET Core Web Application (.NET Core). J'ajoute les fichiers à mon projet en cliquant avec le bouton droit de la souris sur le dossier wwwroot > js puis en sélectionnant. Add > New Item > JavaScript File

Voici mon fichier .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>

13 votes

Si vous rencontrez ce problème après avoir mis à jour VS2017 vers la version 15.3, assurez-vous de jeter un coup d'œil à la page suivante ici . MS a décidé d'inclure certains dossiers tels que wwwroot par défaut maintenant, ce qui signifie qu'ils sont probablement inclus deux fois.

0 votes

L'article que @jao a partagé, explique très bien pourquoi cela se produit et comment le réparer. Allez directement à cet article.

0 votes

Pour plus d'informations sur EnableDefaultContentItems : stackoverflow.com/a/46984128/67824

209voto

Dzhefer Points 1712
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'

3 votes

Cela a résolu le problème pour moi, mais que s'est-il passé pour que cela fonctionne ?

0 votes

@Rono On dirait qu'il identifie explicitement tous les fichiers de votre fichier wwwroot dans le fichier .csproj. ex : i.imgur.com/4SPnQ5h.png

4 votes

Cela a fonctionné pour moi aussi - et c'est une façon beaucoup plus sûre de procéder à mon avis que la réponse acceptée.

118voto

Pinski Points 1407

J'ai rencontré le même problème. Je ne voulais pas désactiver DefaultCompileItems parce que je savais que cela ne "réglerait" pas le problème. J'ai donc déchargé mon projet et ouvert le fichier .csproj en mode texte dans Visual Studio et j'ai vu ceci.

<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>

Lorsque j'ai mis en commentaire le premier bloc ItemGroup, cela a fonctionné. Ce que je suppose, c'est que le projet ajoute l'ensemble de l'élément \images\friends -dans le dossier, puis en ajoutant chaque image individuelle, ce qui provoque une duplication.

En ce qui concerne les css et js personnalisés, le projet ajoute automatiquement le wwwroot. \css et wwwroot \js donc si vous avez ajouté un fichier individuel (comme wwwroot \css\custom -bootstrap-navbar.css), il sera considéré comme un doublon.

1 votes

Ce site <Folder Include="wwwroot\" /> ça marche pour moi, mais Visual Studio annule cela plus tard :(

4 votes

Ok, je ne comprends pas. Que diable fait Visual Studio et pourquoi ?

27voto

harveyt Points 150

Cela a fonctionné dans mon cas :

 <PropertyGroup>
    ...
    <EnableDefaultContentItems>false</EnableDefaultContentItems>
  </PropertyGroup>

5 votes

Comme je l'ai indiqué dans mon commentaire à la réponse de Pinki, je ne proposerais pas cette solution car elle pourrait entraîner davantage d'erreurs.

0 votes

En fait, j'ai rencontré de plus gros problèmes en mettant cette option sur false. Je recommande également de ne pas la mettre à false.

0 votes

Quel est le moyen le plus propre d'obtenir qu'un dossier soit entièrement inclus dans des éléments EmbeddedResource ?

17voto

wtf512 Points 1028

Cela s'est produit lorsque j'ai mis à jour mon projet de .NET Core 1.X à 2.0 à l'instant. Voici ma solution.

  • Ouvrez xxx.csproj, ou faites un clic droit sur le projet.
  • Décharger le projet
  • Modifiez xxx.csproj.

Ensuite, supprimez les éléments du ItemGroup qui commencent par <Content Include = "wwwroot\xxxxx"

0 votes

Merci ! Note : Le problème semble être lié à la dernière version de Visual Studio 15.3, et non directement à .NET Core 2.0.

10voto

Grandizer Points 316

Mes problèmes étaient proches mais pas exactement les mêmes. Mon erreur était la suivante :

C:\Program Fichiers \dotnet\sdk\2.0.0 -preview2-006497 \Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.Sdk.DefaultItems.targets (285,5) : erreur : Des éléments 'Content' en double ont été inclus. Le SDK .NET inclut par défaut les éléments "Content" dans le répertoire de votre projet. Vous pouvez soit supprimer ces éléments de votre fichier de projet, soit définir la propriété "EnableDefaultContentItems" sur "false" si vous souhaitez les inclure explicitement dans votre fichier de projet. Pour plus d'informations, voir https://aka.ms/sdkimplicititems . Les éléments en double étaient : '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 Projets \Time Carte \avantia -feuille de temps \Solution\Almanac\Almanac.csproj ]

Si je faisais ça :

<EnableDefaultContentItems>false</EnableDefaultContentItems>

Il ne compile pas car tout d'un coup Areas ne serait pas reconnu.

Ma solution, semble étrange, mais le message me le dit, il y avait des fichiers en double :

Les éléments en double étaient : 'wwwroot \js\KOBindings.js ' ; 'wwwroot \js\KOPleaseWait.js ' ; 'wwwroot \js\ProjectTime\Add.js ' ; 'wwwroot \js\TimeAdmin\Invoice.js ' ; 'wwwroot \js\TimeAdmin\PayPeriodTotals.js '

En regardant mon .csproj fichier :

<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>

C'était le SEUL endroit du projet où ces fichiers étaient référencés (à part l'endroit où ils étaient chargés). duplicate n'a aucun sens pour moi. Cependant, le fait de commenter ces fichiers comme tels a réglé mon problème :

<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>

Je suppose que cela a quelque chose à voir avec le 2.0.0-preview2-006497 que j'ai récemment installé.

Aussi, cette lien Les mentions parlent de globs. Mais ne me dit pas où c'est. Il parle de SDK et autres. Pourtant, la réponse était mon propre .js fichiers. Ce lien doit être mis à jour ou développé, à mon avis. J'espère que cela aidera quelqu'un.

0 votes

J'aimerais savoir pourquoi cela fonctionne. Cependant, ça a marché pour moi. =)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X