web-dev-qa-db-fra.com

Les éléments "Contenu" en double ont été inclus. Le kit de développement .NET inclut par défaut les éléments 'Contenu' de votre répertoire de projet

Chaque fois que j'ajoute un fichier javascript ou css à mon projet principal asp.net et que j'exécute dotnet run sur mon terminal bash, l'erreur suivante apparaît:

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

.NET.Sdk.DefaultItems.targets (188,5): erreur: dupliquer 'Contenu' les articles ont été inclus. Le Kit de développement .NET inclut les éléments 'Contenu' de votre fichier répertoire du projet par défaut. Vous pouvez soit supprimer ces éléments de votre fichier de projet ou définissez 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 . Le les éléments en double étaient: 'wwwroot/css/BasicQuotation.css'; 'wwwroot/js/BasicQuotation.js' [/mnt/c/Dev/myproject/MyProject/MyProject.csproj]

La construction a échoué. S'il vous plaît corriger les erreurs de construction et réexécutez.

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

Cela se produit dans le modèle d'application Web Visual Studio 2017 ASP.NET Core (.NET Core) par défaut. 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.

Ceci est 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>
97
jao

J'ai donc rencontré le même problème. Je ne voulais pas désactiver DefaultCompileItems car 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 je l'ai vu.

<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 commenté le premier bloc ItemGroup, cela a fonctionné. Ce que je suppose, c’est que le projet ajoute le dossier entier\images\friends-eating \, puis chaque image, ce qui entraîne une duplication. 

En ce qui concerne les fichiers css et js personnalisés, le projet ajoute automatiquement wwwroot\css et wwwroot\js. Par conséquent, si vous ajoutez un fichier individuel (tel que wwwroot\css\custom-bootstrap-navbar.css), il sera considéré comme un doublon.

92
Pinski
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'
162
Dzhefer

Cela a fonctionné dans mon cas:

 <PropertyGroup>
    ...
    <EnableDefaultContentItems>false</EnableDefaultContentItems>
  </PropertyGroup>
21
harveyt

C'est arrivé lorsque j'ai mis à niveau mon projet de .NET Core 1.X à 2.0 tout à l'heure. Voici ma solution.

  • Ouvrez xxx.csproj ou cliquez sur le projet avec le bouton droit de la souris
  • Décharger le projet
  • Éditez xxx.csproj.

Puis supprimez les éléments ItemGroup commençant par <Content Include = "wwwroot\xxxxx"

12
wtf512

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

C:\Program Files\dotnet\sdk\2.0.0-preview2-006497\Sdks\Microsoft. ont été incluses. Le kit de développement .NET inclut par défaut les éléments 'Contenu' de votre répertoire de projet. Vous pouvez supprimer ces éléments de votre fichier de projet ou 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:\Projets Avantia\Carte de temps\feuille de temps avantia\Solution\Almanac\Almanac.csproj]

Si j'ai fait ça:

<EnableDefaultContentItems>false</EnableDefaultContentItems>

Il ne serait pas compilé car l’ensemble de la variable Areas ne serait pas reconnu.

Ma solution semble étrange, mais le message me l'indique, 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 fichier .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>

C’était le SEUL emplacement dans l’ensemble du projet où ces fichiers étaient des références (mis à part le lieu où ils ont été chargés). La phrase duplicate n’a donc aucun sens. Cependant, commenter ces fichiers en tant que tels a résolu 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é.

En outre, ce link mentions parle de globs. Mais ne me dit pas où c'est. Il parle de SDK et autres. Pourtant, la réponse était mes fichiers .js personnalisés. Ce lien doit être mis à jour ou développé sur IMHO. J'espère que ça aide quelqu'un.

10
Grandizer

Comme link indique , vous pouvez désactiver ce comportement (inclusion automatique) et inclure explicitement tout le contenu en l'ajoutant dans votre fichier csproj:

<PropertyGroup>
    <EnableDefaultContentItems>false</EnableDefaultContentItems>
</PropertyGroup>
6
Dmitry

En fait, Asp.net core inclut automatiquement le contenu des emplacements wwwroot\css\, wwwroot\js\ et wwwroot\lib\. Ainsi, même si votre fichier csproj inclut explicitement le contenu de ces répertoires, ce contenu sera dupliqué. La suppression du contenu de votre fichier csproj est donc le meilleur moyen de supprimer de cette erreur. Alors supprimez ci-dessous le contenu

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

Dans mon cas, j'ai résolu ce problème en supprimant tous les fichiers du répertoire wwwroot-Directory dans VS. Déchargez et rechargez le projet . Recopiez tous les fichiers avec VS. Terminé

2
Alex Freund

Sous Visual Studio 2017 15.3, avec .NET Core 2.0, EnableDefaultCompileItems ne fonctionnait pas pour moi.

J'avais besoin d'ajouter ceci à mon .csproj

  <PropertyGroup>
    <EnableDefaultContentItems>false</EnableDefaultContentItems>
  </PropertyGroup>
1
Kyriacos

Non pas que je puisse le voir dans votre exemple ci-dessus, pour aider d'autres SO chercheurs.

Vous pouvez également obtenir cette erreur lorsque le même fichier est répertorié deux fois dans les éléments <Content Include="xxx" /> de votre fichier csproj.

Supprimez la copie et reconstruisez.

1
Sam

Je pense que la désactivation de "EnableDefaultContentItems" n'est pas la meilleure option . La modification manuelle du fichier cs-Proj n'est pas non plus une bonne idée.

Donc, pour notre pipeline de construction, nous avons écrit un très petit outil qui supprime toutes les entrées dupliquées automatiquement: dotnet-csproj-cleaner

Nous l'exécutons sous Docker en tant que première étape de construction de notre pipeline d'intégration continue.

1
anakod

Mon cas, je est désactiver bot ci-dessous les éléments par défaut.

<EnableDefaultContentItems>false</EnableDefaultContentItems>
<EnableDefaultItems>false</EnableDefaultItems>
1
Duy Hoang

J'ai trouvé une solution appropriée différente. 

  1. Faites un clic droit sur votre projet MVC et cliquez sur Modifier csproj. 
  2. Si vous ajoutez des fichiers sous wwwroot, déplacez-les simplement vers un dossier sous wwwroot, disons-le "thème"

Et supprimez toutes les balises de contenu du fichier csproj si elles existent, un exemple;

<Content Include="wwwroot\theme\favicon.ico" />
<Content Include="wwwroot\theme\fonts\cyrillic-ext400.woff2" />
<Content Include="wwwroot\theme\fonts\cyrillic-ext700.woff2" />

Et ajoutez seulement ceci;

  <ItemGroup>
    <Folder Include="wwwroot\theme\" />
  </ItemGroup>

Ainsi, le fichier csproj devrait ressembler à ceci;

    <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 cette façon, je pense que vous ajoutez tous les fichiers dans le dossier du thème. Donc, ne les incluez pas un par un, ce qui génère des erreurs.

1
Lost_In_Library

J'ai eu le même problème avec seulement un fichier, et tous les autres fonctionnaient (tous mes modèles étaient stockés directement dans wwwroot/content). Le projet n'a pas été créé par moi, alors je ne connais pas beaucoup de détails.

Le problème a été résolu par renommage en arrière le fichier avec le problème:

MyTemplate.html - renommé -> MyTemplate2.html - renommé -> MyTemplate.html

Remarque : Lors du premier changement de nom, une erreur similaire à "configuration du contenu introuvable}" s'est produite, mais le deuxième changement de nom a fonctionné sans problème.

Après cela, j'ai pu compiler le projet avec succès.

0
Razvan

Projets .NET Core

Si vous êtes dans une bibliothèque de classes, vous devrez probablement supprimer tous les éléments Compile/Content de votre csproj car ils sont automatiquement inclus. 

<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>
0
Razvan Dumitru

Exclure et inclure les dossiers qui ont une erreur de duplication a fonctionné pour moi! J'espère que ceci aide quelqu'un d'autre!

0
revobtz