중복 된 '콘텐츠'항목이 포함되었습니다. .NET SDK에는 기본적으로 프로젝트 디렉토리의 'Content'항목이 포함됩니다.


132

Javascript 또는 CSS 파일을 asp.net 핵심 프로젝트에 추가하고 dotnet runbash 터미널에서 실행할 때마다 다음 오류가 발생합니다.

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

.NET.Sdk.DefaultItems.targets (188,5) : 오류 : 중복 '콘텐츠'항목이 포함되었습니다. .NET SDK에는 기본적으로 프로젝트 디렉토리의 'Content'항목이 포함됩니다. 프로젝트 파일에서 이러한 항목을 제거하거나 프로젝트 파일에 명시 적으로 포함 시키려면 'EnableDefaultContentItems'속성을 'false'로 설정할 수 있습니다. 자세한 내용은 https://aka.ms/sdkimplicititems를 참조 하십시오 . 중복 된 항목은 'wwwroot / css / BasicQuotation.css'; 'wwwroot / js / BasicQuotation.js'[/mnt/c/Dev/myproject/MyProject/MyProject.csproj]

빌드가 실패했습니다. 빌드 오류를 수정하고 다시 실행하십시오.

ItemGroup내 csproj 파일에서 를 제거 하여이 문제를 해결할 수는 있지만 그것이 매우 생산적이라고 생각하지 않습니다.

기본 Visual Studio 2017 ASP.NET 핵심 웹 응용 프로그램 (.NET 핵심) 템플릿에서 발생합니다. wwwroot> js 폴더를 마우스 오른쪽 버튼으로 클릭하여 프로젝트에 파일을 추가 한 다음Add > New Item > JavaScript File

이것은 내 .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
VS2017을 v15.3으로 업데이트 한 후이 문제가 발생하면 여기를 확인 하십시오 . MS는 현재 기본적으로 wwwroot와 같은 특정 폴더를 포함하기로 결정했습니다. 이는 아마도 두 번 포함 된 것입니다.
jao

@jao가 공유 한 기사는 왜 이런 일이 발생하고 어떻게 해결하는지 잘 설명합니다. 그 기사로 바로 가십시오.
Pepito Fernandez

답변:


107

그래서 나는이 같은 문제에 부딪쳤다. 문제를 "수정"하지 않는다는 것을 알았 기 때문에 DefaultCompileItems를 끄고 싶지 않았습니다. 그래서 프로젝트를 언로드하고 Visual Studio에서 텍스트 모드로 .csproj 파일을 열어서 이것을 보았습니다.

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

첫 번째 ItemGroup 블록을 주석 처리했을 때 작동했습니다. 내가 생각하는 것은 프로젝트가 전체 \ images \ friends-eating \ 폴더를 추가 한 다음 각 개별 이미지를 추가하여 중복을 일으키는 것입니다.

사용자 정의 CSS 및 js에 이르기까지 프로젝트는 wwwroot \ css 및 wwwroot \ js를 자동으로 추가하므로 개별 파일이 추가 된 경우 (wwwroot \ css \ custom-bootstrap-navbar.css와 같이) 중복으로 계산됩니다.


이것은 <Folder Include="wwwroot\" />나를 위해 작동하지만 Visual Studio는 나중에 그것을 취소합니다 :(
Jaider

3
그래, 나는 그것을 얻지 못한다. 비주얼 스튜디오는 실제로 무엇을하고 있으며 왜 그런가?
tnk479

194
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
이렇게하면 문제가 해결되었지만 실제로 어떻게 작동합니까?
Rono

@Rono .csproj 파일에서 wwwroot 파일의 모든 파일을 명시 적으로 식별하는 것 같습니다. 예 : i.imgur.com/4SPnQ5h.png
J. Schei

4
나에게도 효과가 있었으며 받아 들인 대답보다 내 의견에 훨씬 안전합니다.
brinch

그것은 나에게도 효과가 있었다! DefaultContentItems를 비활성화하면 솔루션을 구축하는 데 도움이되었지만 이미지, CSS 및 기타 파일은 표시되지 않았습니다.
Bruno Serrano

1
"wwwroot"를 제외하고 나면 솔루션 탐색기 상단에있는 "모든 파일 표시"버튼 (3 장의 용지가 겹친 것처럼 보임)을 클릭하여 "wwwroot"폴더를 다시 찾아서 추가 할 수 있습니다. 내 것이 사라졌고이 버튼을 찾을 때까지 어떻게 되돌릴 수 있는지 몰랐습니다. 폴더가 회색으로 표시되어 포함되지 않았 음을 나타냅니다.
James Toomey

25

이것은 내 경우에 효과가 있었다.

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

3
Pinki의 답변에 대한 의견에서 언급했듯이 더 많은 오류가 발생할 수 있으므로 해결책으로 제안하지 않습니다.
Matt

실제로이 옵션을 false로 설정하면 더 큰 문제가 발생했습니다. 또한 false로 설정하지 않는 것이 좋습니다.
Rwiti

폴더를 EmbeddedResource 요소로 완전히 포함시키는 가장 깨끗한 방법은 무엇입니까?
John Zabroski '12

이 wwwroot는 더 이상 포함되지 않았습니다. 그래서 이것을 사용하지 않는 것이 좋습니다.
UNeverNo

14

지금 프로젝트를 .NET Core 1.X에서 2.0으로 업그레이드했을 때 발생했습니다. 여기 내 해결책이 있습니다.

  • xxx.csproj를 열거 나 프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오.
  • 프로젝트 언로드
  • xxx.csproj를 편집하십시오.

그런 다음 ItemGroup 항목을 제거하십시오. <Content Include = "wwwroot\xxxxx"


감사! 참고 : 최신 Visual Studio 버전 15.3과 관련이있는 것 같습니다. .NET Core 2.0
Vincent V.

10

내 문제는 비슷했지만 정확히 같지는 않았습니다. 내 오류는 이것이었다 :

C : \ Program Files \ dotnet \ sdk \ 2.0.0-preview2-006497 \ Sdks \ Microsoft.NET.Sdk \ build \ Microsoft.NET.Sdk.DefaultItems.targets (285,5) : 오류 : '콘텐츠'항목 복제 포함되었습니다. .NET SDK에는 기본적으로 프로젝트 디렉토리의 'Content'항목이 포함됩니다. 프로젝트 파일에서 이러한 항목을 제거하거나 프로젝트 파일에 명시 적으로 포함 시키려면 'EnableDefaultContentItems'속성을 'false'로 설정할 수 있습니다. 자세한 내용은 https://aka.ms/sdkimplicititems를 참조 하십시오 . 중복 된 항목은 다음과 같습니다. '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.

내가 이렇게하면 :

<EnableDefaultContentItems>false</EnableDefaultContentItems>

갑자기 Areas인식되지 않기 때문에 컴파일 되지 않습니다.

내 솔루션은 이상하게 보이지만 메시지에 나와있는 것처럼 중복 파일이 있습니다.

중복 된 항목은 다음과 같습니다. 'wwwroot \ js \ KOBindings.js'; 'wwwroot \ js \ KOPleaseWait.js'; 'wwwroot \ js \ ProjectTime \ Add.js'; 'wwwroot \ js \ TimeAdmin \ Invoice.js'; 'wwwroot \ js \ TimeAdmin \ PayPeriodTotals.js'

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

이것은 파일이 참조 된 전체 프로젝트 내에서 유일한 위치였습니다 (파일이로드 된 곳은 제외). 중복 문구 는 나에게 의미가 없습니다. 그러나 그러한 파일을 주석 처리하면 내 문제가 해결되었습니다.

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

나는 이것이 2.0.0-preview2-006497최근에 설치 한 것과 관련 이 있다고 가정합니다 .

또한,이 링크 는 글로브에 대한 이야기를 언급합니다. 그러나 그것이 어디에 있는지 말하지 않습니다. SDK 등에 대해 이야기합니다. 그러나 대답은 내 사용자 정의 .js파일이었습니다. IMHO에서 해당 링크를 업데이트하거나 확장해야합니다. 이것이 누군가를 돕기를 바랍니다.


왜 이것이 작동하는지 알고 싶습니다. 그러나 방금 나를 위해 일했습니다. =)
개구리 Pr1nce

10

링크가 말한다 ,이 동작을 (자동 포함) 해제하고이 점을 추가하여 모든 내용을 명시 적으로 포함 할 수 있습니다 csproj파일 :

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

1
csproj 파일에 추가하고 css / js 항목 그룹을 제거하면 다음 오류가 발생합니다.CSC : error CS5001: Program does not contain a static 'Main' method suitable for an entry point [/mnt/c/Dev/myproject/MyProject/MyProject.csproj] The build failed. Please fix the build errors and run again.
jao

2
"컴파일"이 아닌 "컨텐츠"-그렇지 않습니까?
harveyt 2016 년

한쪽 노트 .... 당신의 조회수 폴더를 명시 적으로 포함되지 않는 경우,이 설정으로 귀하의 의견을 게시하지 않습니다
saluce

나는 이것을 시도했지만 작동하지 않았다. 여전히 같은 오류가 발생
pantonis

3

제 경우에는 VS의 wwwroot-Directory에서 모든 파일을 삭제 하여이 문제를 해결했습니다. 프로젝트를 언로드했다가 다시로드하십시오. VS로 모든 파일을 다시 복사하십시오. 끝난


최고의 솔루션 중 어느 것도 나를 위해 일하지 않았습니다. 귀하의 의견을 읽기 전에이 작업을 수행했으며 이것이 완벽하게 작동합니다 !!! 나는 wwwroot, controllers, views 폴더를 제외하고 다시 추가했으며 이제는 모든 것이 잘 작동합니다!
revobtz

2

사실, Asp.net 코어는 자동으로 콘텐츠 포함 wwwroot\css\, wwwroot\js\그리고 wwwroot\lib\귀하의 경우 지금이에도 불구하고 위치를 csproj파일이 명시 적으로 제거하는 컨텐츠 있도록 다음 해당 내용이 중복됩니다 해당 디렉토리의 내용을 포함 csproj파일이 오류를 제거 할 수있는 더 좋은 방법입니다. 아래 내용을 제거하십시오.

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

1
이것은 Visual Studio를 15.3으로 업데이트 할 때 발생했습니다. 아직 업데이트하지 않은 동료의 변경 내용을 중단하지 않으 <PropertyGroup> <EnableDefaultContentItems>false</EnableDefaultContentItems> </PropertyGroup>려면 .csproj 파일 에 추가 해야했습니다.
saluce

@saluce 네, 맞습니다. 당신의 상황에서도 사용할 수있는 것과 동일한 솔루션입니다. 선택은 개발자의 유지 여부에 따라 결정 EnableDefaultContentItems됩니다. 두 가지 접근 방식이 있습니다
Mostafiz

내 요점은 내가 한 유일한 변경은 Visual Studio를 15.3으로 업그레이드하는 것입니다. 프로젝트를 변경하지 않았지만 업그레이드하기 전에이 설정이 필요하지 않았습니다.
saluce

2

내 경우에는 기본 항목 아래 모두를 비활성화합니다.

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

1

다른 SO 검색자를 돕기 위해 위의 예에서 볼 수는 없습니다.

파일의 <Content Include="xxx" />요소에 동일한 파일이 두 번 나열된 경우에도이 오류가 발생할 수 있습니다 csproj.

복제본을 제거하고 다시 빌드하십시오.


1

.NET Core 2.0이 설치된 Visual Studio 2017 15.3에서는 EnableDefaultCompileItems가 작동하지 않았습니다.

이것을 내 .csproj에 추가해야했습니다.

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

나를 위해 (visual studio 15.3.4 .NET framework 4.5.2) EnableDefaultContentItems는 작동하지 않지만 EnableDefaultCompileItems는 작동하지 않았습니다.
hlovdal

1

다른 적절한 해결책을 찾았습니다.

  1. mvc 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 csproj 편집을 클릭하십시오.
  2. wwwroot 아래에 파일을 추가하는 경우 wwwroot 아래의 폴더로 이동하십시오. "테마"라고합시다.

예를 들어 csproj 파일에있는 모든 컨텐츠 태그를 삭제하십시오.

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

그리고 이것을 추가하십시오;

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

csproj 파일은 다음과 같아야합니다.

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

그런 식으로 테마 폴더 아래에 모든 파일을 추가한다고 생각합니다. 따라서 일부 오류를 발생시키는 하나씩 포함시키지 마십시오.


1

.NET 핵심 프로젝트

클래스 라이브러리에 있다면 자동으로 포함되므로 csproj에서 모든 Compile / Content 요소를 제거해야 할 것입니다.

<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

중복 오류가있는 폴더를 제외하고 다시 포함하면 나를 위해 일했습니다! 이것이 다른 누군가를 돕기를 바랍니다!


0

"EnableDefaultContentItems"를 비활성화하는 것이 최선의 옵션이 아니라고 생각합니다. 수동 cs-Proj파일 편집도 좋은 생각이 아닙니다.

따라서 빌드 서버 파이프 라인을 위해 중복 된 모든 항목을 자동으로 제거 하는 매우 작은 도구를 작성했습니다 . dotnet-csproj-cleaner

지속적인 통합 파이프 라인의 첫 번째 빌드 단계로 Docker에서 실행합니다.


멋지지만 왜 wwwroot 경로가있는 프로젝트로 제한됩니까?
John Zabroski '12

표준 VS 콘텐츠 위치이며 기본적으로 경로가 포함되어 있습니다. 더 복잡한 솔루션이 필요한 경우 풀 요청을 제출하십시오. 추가 명령 줄 인수를 추가하면 매우 쉽습니다. 감사합니다.
anakod

0

파일에만 동일한 문제가 있었고 다른 모든 파일이 작동했습니다 (모든 템플릿은 wwwroot / content에 직접 저장되었습니다). 이 프로젝트는 나에 의해 만들어지지 않았으므로 많은 세부 사항을 알지 못합니다.

문제가 있는 파일을 앞뒤로 바꾸어 문제를 해결했습니다.

MyTemplate.html-이름 변경-> MyTemplate2.html-이름 변경-> MyTemplate.html

참고 : 첫 번째 이름 변경시 " content configuration not found " 컨텐츠에 오류가 발생 했지만 두 번째 이름 변경은 문제없이 작동했습니다.

그 후 프로젝트를 성공적으로 컴파일 할 수있었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.