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>
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.
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'
Cela a fonctionné dans mon cas:
<PropertyGroup>
...
<EnableDefaultContentItems>false</EnableDefaultContentItems>
</PropertyGroup>
C'est arrivé lorsque j'ai mis à niveau mon projet de .NET Core 1.X à 2.0 tout à l'heure. Voici ma solution.
Puis supprimez les éléments ItemGroup commençant par <Content Include = "wwwroot\xxxxx"
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.
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>
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>
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é
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>
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.
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.
Mon cas, je est désactiver bot ci-dessous les éléments par défaut.
<EnableDefaultContentItems>false</EnableDefaultContentItems>
<EnableDefaultItems>false</EnableDefaultItems>
J'ai trouvé une solution appropriée différente.
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.
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.
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>
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!