Dubbele ‘Content’-items zijn opgenomen. De .NET SDK bevat standaard ‘Content’-items uit uw projectdirectory

Telkens wanneer ik een javascript- of css-bestand aan mijn asp.net-kernproject toevoeg en ik dotnet runuitvoer in mijn bash-terminal, krijg ik de volgende foutmelding:

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

.NET.Sdk.DefaultItems.targets (188,5): fout: dubbele ‘inhoud’
artikelen waren opgenomen. De .NET SDK bevat ‘Content’-items van uw
projectmap standaard. U kunt deze items verwijderen uit:
uw projectbestand, of stel de eigenschap ‘EnableDefaultContentItems’ in op
‘false’ als u ze expliciet in uw projectbestand wilt opnemen.
Zie https://aka.ms/sdkimplicititemsvoor meer informatie. De
dubbele items waren: ‘wwwroot/css/BasicQuotation.css’;
‘wwwroot/js/BasicQuotation.js’
[/mnt/c/Dev/myproject/MyProject/MyProject.csproj]

Het bouwen is mislukt. Corrigeer de build-fouten en voer het opnieuw uit.

Ik kan dit oplossen door de ItemGroupuit mijn csproj-bestand te verwijderen, maar ik denk niet dat dat erg productief is.

Dit gebeurt in de standaard Visual Studio 2017 ASP.NET Core Web Application (.NET Core)-sjabloon. Ik voeg de bestanden toe aan mijn project door met de rechtermuisknop op de wwwroot > js-map en selecteer vervolgens Add > New Item > JavaScript File

Dit is mijn .csproj-bestand:

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

Antwoord 1, autoriteit 100%

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'

Antwoord 2, autoriteit 57%

Dus ik kwam hetzelfde probleem tegen. Ik wilde DefaultCompileItems niet uitschakelen omdat ik wist dat dit het probleem niet zou “oplossen”. Dus ik ontlaadde mijn project en opende het .csproj-bestand in tekstmodus in Visual Studio en zag dit.

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

Toen ik commentaar gaf op het eerste ItemGroup-blok, werkte het. Wat ik veronderstel dat er gebeurt, is dat het project de hele map \images\friends-eating\ toevoegt en vervolgens elke afzonderlijke afbeelding toevoegt, wat een duplicatie veroorzaakt.

Wat de aangepaste css en js betreft, voegt het project automatisch wwwroot\css en wwwroot\js toe, dus als u een afzonderlijk bestand hebt toegevoegd (zoals wwwroot\css\custom-bootstrap-navbar.css), telt dit als een duplicaat.


Antwoord 3, autoriteit 13%

Dit werkte in mijn geval:

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

Antwoord 4, autoriteit 8%

Het gebeurde net toen ik mijn project upgrade van .NET Core 1.X naar 2.0. Hier is mijn oplossing.

  • Open xxx.csproj, of klik met de rechtermuisknop op project
  • Project verwijderen
  • Bewerk xxx.csproj.

Verwijder ItemGroup-items die beginnen met <Content Include = "wwwroot\xxxxx"


Antwoord 5, autoriteit 7%

Als link zegt, je kunt dit gedrag uitschakelen (automatisch opnemen) en alle inhoud expliciet opnemen door dit toe te voegen aan je csproj-bestand:

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

Antwoord 6, autoriteit 5%

Mijn problemen waren dichtbij, maar niet exact hetzelfde. Mijn fout was deze:

C:\Program Files\dotnet\sdk\2.0.0-preview2-006497\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.Sdk.DefaultItems.targets(285,5): fout: Duplicaat ‘ Content’-items zijn opgenomen. De .NET SDK bevat standaard ‘Content’-items uit uw projectdirectory. U kunt deze items uit uw projectbestand verwijderen of de eigenschap ‘EnableDefaultContentItems’ op ‘false’ zetten als u ze expliciet in uw projectbestand wilt opnemen. Zie https://aka.ms/sdkimplicititemsvoor meer informatie. De dubbele items waren: ‘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]

Als ik dit deed:

<EnableDefaultContentItems>false</EnableDefaultContentItems>

Het zou niet compileren omdat plotseling Areasniet zouden worden herkend.

Mijn oplossing lijkt vreemd, maar het bericht zegt het me, er waren dubbele bestanden:

De dubbele items waren: ‘wwwroot\js\KOBindings.js’; ‘wwwroot\js\KOPleaseWait.js’; ‘wwwroot\js\ProjectTime\Add.js’; ‘wwwroot\js\TimeAdmin\Invoice.js’; ‘wwwroot\js\TimeAdmin\PayPeriodTotals.js’

Kijkend naar mijn .csproj-bestand:

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

Dit was de ENIGE locatie binnen het hele project waar deze bestanden referenties waren (afgezien van waar ze werden geladen.) Dus de uitdrukking duplicateslaat voor mij nergens op. Echter, door die bestanden als zodanig te becommentariëren, loste ik mijn probleem op:

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

Ik neem aan dat dit iets te maken heeft met de 2.0.0-preview2-006497die ik onlangs heb geïnstalleerd.

Ook deze linkvermeldt gesprekken over globs. Maar zegt me niet waar dat is. Er wordt gesproken over SDK’s en dergelijke. Maar het antwoord waren mijn aangepaste .js-bestanden. Die link moet op IMHO worden bijgewerkt of uitgebreid. Ik hoop dat dit iemand helpt.


Antwoord 7

In mijn geval heb ik dit opgelost door alle bestanden uit de wwwroot-directory in VS te verwijderen.
Het project uitladen en opnieuw laden.
Kopieer alle bestanden terug met VS.
Klaar


Antwoord 8

Eigenlijk bevat Asp.net core automatisch inhoud van de locatie wwwroot\css\, wwwroot\js\en wwwroot\lib\, dus als uw csproj-bestand expliciet inhoud uit die mappen bevat, wordt die inhoud gedupliceerd, dus het verwijderen van inhoud uit uw csproj-bestand is de betere manier om van deze fout af te komen . Dus verwijder onderstaande inhoud-

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

Antwoord 9

.NET kernprojecten

Als u zich in een klassenbibliotheek bevindt, moet u waarschijnlijk alle Compile/Content-elementen uit uw csproj verwijderen, aangezien deze automatisch worden opgenomen.

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

Antwoord 10

Niet dat ik het in je voorbeeld hierboven kan zien, om andere SO-zoekers te helpen..

Je kunt deze foutmelding ook krijgen als hetzelfde bestand twee keer wordt vermeld in <Content Include="xxx" />-elementen in je csproj-bestand.

Verwijder het duplicaat en herbouw.


Antwoord 11

Mijn geval I schakelt beide onderstaande standaarditems uit.

<EnableDefaultContentItems>false</EnableDefaultContentItems>
<EnableDefaultItems>false</EnableDefaultItems>

Antwoord 12

Onder Visual Studio 2017 15.3, met .NET Core 2.0,
EnableDefaultCompileItems werkte niet voor mij.

Ik moest dit toevoegen aan mijn .csproj

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

Antwoord 13

Ik heb een andere juiste oplossing gevonden.

  1. Klik met de rechtermuisknop op uw mvc-project en klik op csproj bewerken.
  2. Als je bestanden toevoegt onder wwwroot, verplaats ze dan gewoon naar een map onder wwwroot, laten we zeggen “thema”

En verwijder alle inhoudstags in het csproj-bestand als ze bestaan, een voorbeeld;

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

En alleen dit toevoegen;

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

Het csproj-bestand zou er dus zo uit moeten zien;

   <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" />
...

Op die manier denk ik dat je alle bestanden onder de themamap toevoegt. Neem ze dus niet één voor één op, wat fouten kan opleveren.


Antwoord 14

Het uitsluiten en terug opnemen van de mappen met dubbele fouten werkte voor mij! Ik hoop dat dit iemand anders helpt!


Antwoord 15

Ik denk dat het uitschakelen van “EnableDefaultContentItems” niet de beste optie is.
Handmatig bewerken van cs-Projbestanden is ook helemaal geen goed idee.

Dus voor onze build-serverpijplijn hebben we een zeer kleine tool geschreven die alle dubbele vermeldingen automatisch verwijdert:
dotnet-csproj-cleaner

We voeren het uit onder Docker als de eerste bouwstap in onze pijplijn voor continue integratie.


Antwoord 16

Ik had hetzelfde probleem met alleen een bestand, en alle andere werkten (al mijn sjablonen waren rechtstreeks opgeslagen in wwwroot/content). Het project is niet door mij gemaakt, dus ik weet niet veel details.

Het probleem is verholpen door heen en weer te hernoemenhet bestand met het probleem:

MijnTemplate.html — hernoemd –> MijnTemplate2.html — hernoemd –> MijnTemplate.html

Opmerking: bij de eerste hernoeming kreeg ik een foutmelding met iets in de trant van “inhoudsconfiguratie niet gevonden“, maar de tweede hernoeming werkte zonder problemen.

Hierna kon ik het project succesvol compileren.


Antwoord 17

Ik ben net begonnen en kreeg deze fout toen ik probeerde een wwwroot-map te kopiëren van een webtoepassingssjabloon naar een project dat met een API-sjabloon was gemaakt. het verwijderen van bootstrap loste het voor mij op, wat prima is omdat ik alleen jQuery nodig heb.


Antwoord 18

Dus wat voor mij werkte, was door op het betreffende bestand te klikken in de Solution Explorer en “Uitsluiten van project” te kiezen. Voeg het dan opnieuw toe met “Opnemen in project”.


Antwoord 19

Alle antwoorden die voor mij zijn geschreven, hebben de ‘Dubbele’ fouten niet voor mij opgelost, hoewel ik de nodige zorgvuldigheid had betracht om ervoor te zorgen dat hun aanbevolen procedures werden gevolgd.

Voor mij trad het probleem met dubbele inhoud op toen ik probeerde de SDK van mijn WinUI 3-applicatie te upgraden van Windows App SDK 0.8 naar 1.0 in Nuget Package Manager. Toen ik dit deed, begon mijn project deze fout bij elke compilatie te produceren, en ik probeerde de Exclude/Include-methoden uit te voeren die anderen suggereerden, maar het mocht niet baten.

Het kostte me ongeveer acht uur om de boosdoener te vinden, wat een verwijzing was naar een anderWinUI-bibliotheekproject dat ik nog had op Windows App SDK 0.8. Nadat ik het andere WinUI-bibliotheekproject naar SDK 1.0 had geüpgraded, verdween deze fout.

Dit antwoord hier achterlaten voor het geval iemand anders er iets aan heeft.

Other episodes