私の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>
だから私はこれと同じ問題に遭遇した。 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など)は、重複と見なされます。
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'
これは私の場合はうまくいきました:
<PropertyGroup>
...
<EnableDefaultContentItems>false</EnableDefaultContentItems>
</PropertyGroup>
私のプロジェクトを今すぐ.NET Core 1.Xから2.0にアップグレードするときに起こります。これが私の解決策です。
それからItemGroup項目を削除します<Content Include = "wwwroot\xxxxx"
で始まる項目
私の問題は近かったが、まったく同じではなかった。私のエラーはこれでした:
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
ファイルでした。そのリンクは私見で更新または拡張する必要があります。これが誰かに役立つことを願っています。
link says のように、この振る舞いを無効にして(自動インクルード)、これをcsproj
ファイルに追加することで明示的にすべてのコンテンツを含めることができます。
<PropertyGroup>
<EnableDefaultContentItems>false</EnableDefaultContentItems>
</PropertyGroup>
私の場合は、VSのwwwroot-Directoryからすべてのファイルを削除することでこれを解決しました。プロジェクトをアンロードして再ロードします。 VSですべてのファイルをコピーして戻します。完了
実際、Asp.netコアは自動的にwwwroot\css\
、wwwroot\js\
およびwwwroot\lib\
の場所からのコンテンツを含むので、csproj
name__ファイルがそれらのディレクトリからのコンテンツを明示的に含む場合、それらのコンテンツは重複するので、csproj
name__ファイルからのコンテンツの削除このエラーの。だから下のコンテンツを削除 -
<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>
.NET Core 2.0を含むVisual Studio 2017 15.3では、EnableDefaultCompileItemsが機能しませんでした。
これを自分の.csprojに追加する必要がありました
<PropertyGroup>
<EnableDefaultContentItems>false</EnableDefaultContentItems>
</PropertyGroup>
他のSO検索者を手助けするために、上記の例でそれを見ることができるというわけではありません。
csproj
ファイルの<Content Include="xxx" />
要素に同じファイルが2回リストされている場合にも、このエラーが発生する可能性があります。
重複を削除して再構築します。
私の場合私は両方のデフォルト項目を無効にしています。
<EnableDefaultContentItems>false</EnableDefaultContentItems>
<EnableDefaultItems>false</EnableDefaultItems>
私は別の適切な解決策を見つけました。
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つずつ含めないでください。
"EnableDefaultContentItems"を無効にするのが最善の選択肢ではないと思います。手動でのcs-Proj
ファイルの編集も全く良い考えではありません。
だから私たちのビルドサーバーパイプラインのために、私たちは自動的にすべての重複したエントリーを削除するものを書く非常に小さなツールを書きました: dotnet-csproj-cleaner
継続的インテグレーションパイプラインの最初のビルドステップとして、Dockerの下で実行します。
私はファイルだけで同じ問題を抱えていました、そして、他のすべては働いていました(私のすべてのテンプレートはwwwroot/contentに直接保存されました)。このプロジェクトは私が作成したものではないので、詳細はわかりません。
問題は前後に名前を変更する問題のあるファイルで修正されました:
MyTemplate.html - 名前変更 - > MyTemplate2.html - 名前変更 - > MyTemplate.html
注:最初の名前変更時に "コンテンツ設定が見つかりません"という行に沿って何かエラーが表示されましたが、 2番目の名前変更は問題なく動作しました。
その後、私はプロジェクトをうまくコンパイルすることができました。
.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>
重複エラーのあるフォルダを除外して元に戻すことができました。これが他の誰かに役立つことを願っています!