1. ホーム
  2. asp.net

[解決済み] コンテンツ」項目が重複して含まれていました。.NET SDKは、デフォルトでプロジェクトディレクトリの'Content'アイテムを含めます。

2022-05-03 09:17:26

質問

asp.net coreのプロジェクトに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 は、'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 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>

解決方法は?

そこで、これと同じ問題にぶつかりました。 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ブロックをコメントアウトすると、うまくいきました。 想定しているのは、プロジェクトが \friends-eating フォルダ全体を追加してから、個々の画像を追加しているため、重複が発生していることです。

カスタムCSSとカスタムjsに関しては、プロジェクトが自動的にwwwroot\cssとwwwroot\jsを追加するので、個別のファイル(wwwroot\csscustom-bootstrap-navbar.css など)を追加した場合は、重複としてカウントされることに注意してください。