web-dev-qa-db-ja.com

重複した「コンテンツ」項目が含まれていました。NETSDKには、デフォルトでプロジェクトディレクトリの「コンテンツ」項目が含まれています

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

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

.NET.Sdk.DefaultItems.targets(188,5):エラー:重複した 'Content'項目が含まれていました。 .NET SDKには、デフォルトでプロジェクトディレクトリの「コンテンツ」項目が含まれています。これらの項目をプロジェクトファイルから削除するか、プロジェクトファイルに明示的に含める場合は、 'EnableDefaultContentItems'プロパティを 'false'に設定します。詳しくは、 https://aka.ms/sdkimplicititems を参照してください。重複項目は次のとおりです。 'wwwroot/css/BasicQuotation.css'; 'wwwroot/js/BasicQuotation.js' [/mnt/c/Dev/myproject/MyProject/MyProject.csproj]

ビルドは失敗しました。ビルドエラーを修正して再度実行してください。

CsprojファイルからItemGroupを削除することでこれを修正できますが、それほど生産的ではないと思います。

これは、既定のVisual Studio 2017 ASP.NETコアWebアプリケーション(.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>
104
jao

だから私はこれと同じ問題に遭遇した。 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など)は、重複と見なされます。

94
Pinski
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'
173
Dzhefer

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

 <PropertyGroup>
    ...
    <EnableDefaultContentItems>false</EnableDefaultContentItems>
  </PropertyGroup>
21
harveyt

私のプロジェクトを今すぐ.NET Core 1.Xから2.0にアップグレードするときに起こります。これが私の解決策です。

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

それからItemGroup項目を削除します<Content Include = "wwwroot\xxxxx"で始まる項目

13
wtf512

私の問題は近かったが、まったく同じではなかった。私のエラーはこれでした:

C:\ Program Files\dotnet\sdk\2.0.0-preview2-006497\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.Sdk.DefaultItems.targets(285,5):エラー:重複した「コンテンツ」項目含まれていた。 .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プロジェクト\タイムカード\ avantiaタイムシート\ Solution\Almanac\Almanac.csproj]

私がこれをしたならば:

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

これはこれらのファイルが参照されたプロジェクト全体の中の唯一の場所でした(それらがロードされた場所は別として)。したがってフレーズduplicateは意味がありません。私に。しかし、それらのファイルをそのようにコメントアウトすることで、私の問題を解決しました。

<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と関係があると思います。

また、これ--- link グロブについての話題に言及しています。しかし、それがどこにあるのか私には言わないでください。 SDKなどについて話しています。それでも答えは私のカスタム.jsファイルでした。そのリンクは私見で更新または拡張する必要があります。これが誰かに役立つことを願っています。

10
Grandizer

link says のように、この振る舞いを無効にして(自動インクルード)、これをcsprojファイルに追加することで明示的にすべてのコンテンツを含めることができます。

<PropertyGroup>
    <EnableDefaultContentItems>false</EnableDefaultContentItems>
</PropertyGroup>
6
Dmitry

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

3
Alex Freund

実際、Asp.netコアは自動的にwwwroot\css\wwwroot\js\およびwwwroot\lib\の場所からのコンテンツを含むので、csprojname__ファイルがそれらのディレクトリからのコンテンツを明示的に含む場合、それらのコンテンツは重複するので、csprojname__ファイルからのコンテンツの削除このエラーの。だから下のコンテンツを削除 -

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

.NET Core 2.0を含むVisual Studio 2017 15.3では、EnableDefaultCompileItemsが機能しませんでした。

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

  <PropertyGroup>
    <EnableDefaultContentItems>false</EnableDefaultContentItems>
  </PropertyGroup>
1
Kyriacos

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

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

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

1
Sam

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

<EnableDefaultContentItems>false</EnableDefaultContentItems>
<EnableDefaultItems>false</EnableDefaultItems>
1
Duy Hoang

私は別の適切な解決策を見つけました。

  1. Mvcプロジェクトを右クリックして[Edit 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
Lost_In_Library

"EnableDefaultContentItems"を無効にするのが最善の選択肢ではないと思います。手動でのcs-Projファイルの編集も全く良い考えではありません。

だから私たちのビルドサーバーパイプラインのために、私たちは自動的にすべての重複したエントリーを削除するものを書く非常に小さなツールを書きました: dotnet-csproj-cleaner

継続的インテグレーションパイプラインの最初のビルドステップとして、Dockerの下で実行します。

0
anakod

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

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

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

:最初の名前変更時に "コンテンツ設定が見つかりません"という行に沿って何かエラーが表示されましたが、 2番目の名前変更は問題なく動作しました。

その後、私はプロジェクトをうまくコンパイルすることができました。

0
Razvan

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

重複エラーのあるフォルダを除外して元に戻すことができました。これが他の誰かに役立つことを願っています!

0
revobtz