重複する「コンテンツ」アイテムが含まれていました。.NET SDKには、プロジェクトディレクトリの「コンテンツ」アイテムがデフォルトで含まれています


132

asp.netコアプロジェクトにjavascriptまたはcssファイルを追加dotnet runしてbashターミナルで実行すると、次のエラーが発生します。

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

.NET.Sdk.DefaultItems.targets(188,5):エラー:重複する「コンテンツ」アイテムが含まれていました。.NET SDKには、デフォルトでプロジェクトディレクトリの「コンテンツ」アイテムが含まれています。これらのアイテムをプロジェクトファイルから削除するか、プロジェクトファイルに明示的に含める場合は、 '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 Core Web Application(.NET Core)テンプレートで発生します。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などの特定のフォルダーをデフォルトで含めることを決定しました。つまり、おそらく2回含まれます。
jao 2017

@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\" />は私にとっては機能しますが、ビジュアルスタジオは後でそれを元に戻します:(
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 2017

@Rono .csprojファイル内のwwwrootファイル内のすべてのファイルを明示的に識別するように見えます。例:i.imgur.com/4SPnQ5h.png
J. Schei

4
私もうまくいきました-そして、私の意見では、受け入れられた答えよりもはるかに安全な方法です。
brinch 2017

それも私のために働いた!DefaultContentItemsを無効にすると、ソリューションの構築に役立ちましたが、画像、CSS、およびその他のファイルが表示されませんでした。
ブルーノセラーノ2017

1
"wwwroot"を除外したら、ソリューションエクスプローラーの上部にある[すべてのファイルを表示]ボタン(3枚の紙が乱雑に積み重ねられているように見える)をクリックして "wwwroot"フォルダーを表示し、再度追加できるようにする必要があります。鉱山は姿を消し、このボタンが見つかるまで、それを取り戻す方法がわかりません。フォルダーは灰色で表示され、含まれていないことを示します。
James Toomey

25

これは私の場合にはうまくいきました:

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

3
Pinkiの回答に対する私のコメントで述べたように、これはより多くのエラーにつながる可能性があるため、これを解決策として提案することはしません。
マット

このオプションをfalseに設定すると、実際に大きな問題が発生しました。また、falseに設定しないことをお勧めします。
Rwiti

FolderをEmbeddedResource要素として完全に含める最もクリーンな方法は何ですか?
John Zabroski、

この後、wwwrootは含まれなくなりました。これを使わない方がいい...
UNeverNo

14

プロジェクトを.NET Core 1.Xから2.0にアップグレードしたところです。これが私の解決策です。

  • xxx.csprojを開くか、プロジェクトを右クリック
  • プロジェクトをアンロード
  • xxx.csprojを編集します。

次に、ItemGroupアイテムを削除します <Content Include = "wwwroot\xxxxx"


ありがとう!注:これは、.NETのコア2.0に直接ではなく、最新のVisual Studioバージョン15.3に関連すると思わ
ヴィンセントV.

10

私の問題は近いものでしたが、まったく同じではありませんでした。私のエラーはこれでした:

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含まれていました。.NET SDKには、デフォルトでプロジェクトディレクトリの「コンテンツ」アイテムが含まれています。これらのアイテムをプロジェクトファイルから削除するか、プロジェクトファイルに明示的に含める場合は、 '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 2017

10

リンクが言うには、この動作を無効(自動含める)と、あなたにこれを追加することによって、明示的にすべてのコンテンツを含めることができますcsprojファイル:

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

1
私は私のcsprojファイルにあることを追加し、私はJS itemgroup / CSSを削除すると、私は次のエラーを取得する: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.
ジャオ

2
「コンパイル」ではなく「コンテンツ」-そうではありませんか?
harveyt 2017年

1つの注意点... Viewsフォルダーを明示的に含めない場合、この設定ではビューは公開されません
saluce

私はこれを試しましたが、うまくいきませんでした。それでも同じエラーが発生する
pantonis 2017

3

私の場合、VSのwwwroot-Directoryからすべてのファイルを削除することでこれを解決しました。プロジェクトをアンロードして再ロードします。VSですべてのファイルをコピーして戻します。できた


上位の解決策はどれも私にとってうまくいきませんでした。あなたのコメントを読む前にこれを行いましたが、これは完璧に機能します!!! wwwroot、controllers、viewsフォルダーを除外して追加し直したところ、すべて正常に動作しました!
revobtz 2017

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ファイルに追加する必要がありました。
ソース2017

@saluceはい、そうです。あなたのコンテキストでも使用できる同じソリューションです。選択は、開発者が保持するかどうかに基づいてEnableDefaultContentItemsいます。2つの異なるアプローチ
モスタフィズ2017

私の指摘は、私が行った唯一の変更はVisual Studioを15.3にアップグレードすることでした。プロジェクトは変更しませんでしたが、アップグレード前はこの設定は必要ありませんでした。
ソース

2

私の場合、以下のデフォルト項目の両方を無効にしています。

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

1

上記の例では、他のSO検索者を助けるためにそれを見ることができません。

ファイルの<Content Include="xxx" />要素に同じファイルが2回リストされている場合にも、このエラーが発生する可能性がありcsprojます。

重複を削除して再構築します。


1

Visual Studio 2017 15.3で.NET Core 2.0を使用すると、EnableDefaultCompileItemsが機能しませんでした。

これを自分の.csprojに追加する必要がありました

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

私(ビジュアルスタジオ15.3.4 .NETフレームワーク4.5.2)の場合、EnableDefaultCompileItemsは機能していましたが、EnableDefaultContentItemsは機能しませんでした。
hlovdal 2017

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つずつそれらを含めないでください。


1

.NET Coreプロジェクト

クラスライブラリを使用している場合は、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、

これは標準のVSコンテンツの場所であり、パスはデフォルトで含まれています。より複雑なソリューションが必要な場合は、プルリクエストを送信してください。追加のコマンドライン引数を追加することで、非常に簡単になります。ありがとうございました。
anakod

0

ファイルだけで同じ問題が発生し、他のファイルはすべて機能していました(すべてのテンプレートはwwwroot / contentに直接保存されていました)。このプロジェクトは私が作成したものではないため、詳細はわかりません。

この問題は、問題のあるファイルの名前を前後に変更することで修正されました。

MyTemplate.html-名前を変更-> MyTemplate2.html-名前を変更-> MyTemplate.html

:最初の名前変更で「コンテンツ構成が見つかりません」という行に沿って何かエラーが発生しましたが、2番目の名前変更は問題なく機能しました。

この後、プロジェクトを正常にコンパイルすることができました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.