Duplicate 'Content' items were included. The .NET SDK includes 'Content' items from your project directory by default

asp.netasp.net Coreasp.net Core-Mvc

asp.net Problem Overview


Whenever I add a javascript or css file to my asp.net core project and I execute dotnet run in my bash terminal, I get the following error:

> /usr/share/dotnet/sdk/1.0.1/Sdks/Microsoft.NET.Sdk/build/Microsoft > > .NET.Sdk.DefaultItems.targets(188,5): error : Duplicate 'Content' > items were included. The .NET SDK includes 'Content' items from your > project directory by default. You can either remove these items from > your project file, or set the 'EnableDefaultContentItems' property to > 'false' if you want to explicitly include them in your project file. > For more information, see https://aka.ms/sdkimplicititems. The > duplicate items were: 'wwwroot/css/BasicQuotation.css'; > 'wwwroot/js/BasicQuotation.js' > [/mnt/c/Dev/myproject/MyProject/MyProject.csproj] > > The build failed. Please fix the build errors and run again.

I can fix this by removing the ItemGroup from my csproj file, but I don't think that's very productive.

This happens in the default Visual Studio 2017 ASP.NET Core Web Application (.NET Core) template. I add the files to my project by right clicking the wwwroot > js folder and then select Add > New Item > JavaScript File

This is my .csproj file:

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

asp.net Solutions


Solution 1 - asp.net

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'

Solution 2 - asp.net

So I ran into this same issue. I didn't want to turn off DefaultCompileItems because I knew that wouldn't "fix" the problem. So I unloaded my project and opened the .csproj file in text mode in Visual Studio and saw this.

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

When I commented out the first ItemGroup block, it worked. What I assume is happening is that the project is adding the entire \images\friends-eating\ folder and then adding each individual image, causing a duplication.

As far as the custom css and js, the project automatically adds wwwroot\css and wwwroot\js so if you have an individual file added (like wwwroot\css\custom-bootstrap-navbar.css) it'll count as a duplicate.

Solution 3 - asp.net

This worked in my case:

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

Solution 4 - asp.net

It happend when I upgrade my project from .NET Core 1.X to 2.0 just now. Here is my solution.

  • Open xxx.csproj, or right click project
  • Unload Project
  • Edit xxx.csproj.

Then remove ItemGroup items start with <Content Include = "wwwroot\xxxxx"

Solution 5 - asp.net

As link says, you can disable this behavior (auto-include) and include all content explicitly by adding this into your csproj file:

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

Solution 6 - asp.net

My issues was close but not the exact same. My error was this:

> C:\Program Files\dotnet\sdk\2.0.0-preview2-006497\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.Sdk.DefaultItems.targets(285,5): error : Duplicate 'Content' items were included. The .NET SDK includes 'Content' items from your project directory by default. You can either remove these items from your project file, or set the 'EnableDefaultContentItems' property to 'false' if you want to explicitly include them in your project file. For more information, see https://aka.ms/sdkimplicititems. The duplicate items were: '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]

If I did this:

<EnableDefaultContentItems>false</EnableDefaultContentItems>

It would not compile as all of the sudden Areas would not be recognized.

My solution, seems odd, but the message is telling me so, there were duplicate files:

> The duplicate items were: 'wwwroot\js\KOBindings.js'; 'wwwroot\js\KOPleaseWait.js'; 'wwwroot\js\ProjectTime\Add.js'; 'wwwroot\js\TimeAdmin\Invoice.js'; 'wwwroot\js\TimeAdmin\PayPeriodTotals.js'

Looking at my .csproj file:

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

This was the ONLY location within the entire project where these files were references (aside from where they were loaded.) So the phrase duplicate does not make any sense to me. However, commenting those files out as such, took care of my problem:

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

I assume this has something to do with the 2.0.0-preview2-006497 that I recently installed.

Also, this link mentions talks about globs. But does not tell me where that is. It talks about SDKs and such. Yet the answer was my custom .js files. That link needs to be updated or expanded on IMHO. Hope this helps someone.

Solution 7 - asp.net

In my case, I solved this by deleting all files from the wwwroot-Directory in VS. Unload and reload the Project. Copy all files back in with VS. Done

Solution 8 - asp.net

Actually, Asp.net core automatically include content from wwwroot\css\ , wwwroot\js\ and wwwroot\lib\ location, so despite this if your csproj file explicitly include content from those directories then those content will be duplicated so removing content from you csproj file is the better way to get rid of this error. So remove below content-

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

Solution 9 - asp.net

.NET Core Projects

If you are in a class library, probably you'll need to remove all Compile/Content elements from your csproj as those are included automatically.

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

Solution 10 - asp.net

Not that I can see it in your example above, to help other SO searchers..

You can also get this error when you have the same file listed twice in <Content Include="xxx" /> elements in your csproj file.

Remove the duplicate and rebuild.

Solution 11 - asp.net

Under Visual Studio 2017 15.3, with .NET Core 2.0, EnableDefaultCompileItems did not work for me.

I needed to add this to my .csproj

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

Solution 12 - asp.net

My case I is disable both below default items.

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

Solution 13 - asp.net

I found a different proper solution.

  1. Right click on your mvc project and click Edit csproj.
  2. If you are adding files under wwwroot, just move them to a folder under wwwroot, let's say it "theme"

And delete all content tags in csproj file if their exists, an example;

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

And only add this;

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

So, csproj file should be look like this;

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

With that way, I think you are adding all files under theme folder. So not include them one by one which occours some erros.

Solution 14 - asp.net

Excluding and Including back the folders that have duplicates error worked for me! Hope this helps someone else!

Solution 15 - asp.net

I think what disabling "EnableDefaultContentItems" isn't the best option. Manual cs-Proj file editing also isn't the good idea at all.

So for our build server pipeline, we wrote very small tool what will remove all duplicated entries automatically: dotnet-csproj-cleaner

We run it under Docker as the first build step in our continuous integration pipeline.

Solution 16 - asp.net

I had the same problem with only a file, and all others were working (all my templates were stored directly in wwwroot/content). The project was not created by me so I don't know many details.

The problem was fixed by renaming back and forth the file with the issue:

MyTemplate.html -- renamed --> MyTemplate2.html -- renamed --> MyTemplate.html

Note: At the first rename I got an error with something along the lines of "content configuration not found", but the second rename worked without issues.

After this I was able to compile the project successfully.

Solution 17 - asp.net

I'm just getting started and I had this error when I tried copying a wwwroot folder from a Web Application template to a project created with an API template. removing bootstrap solved it for me, which is fine because I just need jquery.

Solution 18 - asp.net

So what worked for me was clicking on the file in question in the Solution Explorer and choosing "Exclude from Project". Then re-add it back using "Include in Project".

Solution 19 - asp.net

All of the answers that were written before me did not resolve the 'Duplicate' errors for me, even though I had taken the due diligence to ensure their recommended procedures were followed.

For me, the 'Duplicate content' issue occurred when I tried to upgrade my WinUI 3 Application's SDK from Windows App SDK 0.8 to 1.0 in the Nuget Package Manager. When I did this, my project began to produce this error on every compile, and I tried to do the Exclude/Include methods that other suggested, but to no avail.

It took me about eight hours to find the culprit, which was a reference to another WinUI library project that I still had on Windows App SDK 0.8. Once I upgraded the other WinUI library project to SDK 1.0, this error went away.

Leaving this answer here in case it helps anyone else.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionjaoView Question on Stackoverflow
Solution 1 - asp.netDzheferView Answer on Stackoverflow
Solution 2 - asp.netPinskiView Answer on Stackoverflow
Solution 3 - asp.netSith2021View Answer on Stackoverflow
Solution 4 - asp.netwtf512View Answer on Stackoverflow
Solution 5 - asp.netDmitryView Answer on Stackoverflow
Solution 6 - asp.netGrandizerView Answer on Stackoverflow
Solution 7 - asp.netAlex FreundView Answer on Stackoverflow
Solution 8 - asp.netMostafizView Answer on Stackoverflow
Solution 9 - asp.netRazvan DumitruView Answer on Stackoverflow
Solution 10 - asp.netSamView Answer on Stackoverflow
Solution 11 - asp.netKyriacosView Answer on Stackoverflow
Solution 12 - asp.netDuy HoangView Answer on Stackoverflow
Solution 13 - asp.netLost_In_LibraryView Answer on Stackoverflow
Solution 14 - asp.netrevobtzView Answer on Stackoverflow
Solution 15 - asp.netanakodView Answer on Stackoverflow
Solution 16 - asp.netRazvanView Answer on Stackoverflow
Solution 17 - asp.netAdnanView Answer on Stackoverflow
Solution 18 - asp.netChrisView Answer on Stackoverflow
Solution 19 - asp.netTam BuiView Answer on Stackoverflow