it-swarm.com.de

Doppelte "Content" -Elemente wurden eingeschlossen. Das .NET SDK enthält standardmäßig "Content" -Elemente aus Ihrem Projektverzeichnis

Immer wenn ich meinem asp.net-Kernprojekt eine Javascript- oder CSS-Datei hinzufüge und dotnet run in meinem Bash-Terminal ausführen, erhalte ich die folgende Fehlermeldung:

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

.NET.Sdk.DefaultItems.targets (188,5): Fehler: Duplizieren von 'Content' Artikel waren enthalten. Das .NET SDK enthält "Content" -Elemente aus Ihrem Projektverzeichnis standardmäßig. Sie können diese Elemente entweder aus .__ entfernen. Ihrer Projektdatei oder setzen Sie die Eigenschaft 'EnableDefaultContentItems' auf 'false', wenn Sie sie explizit in Ihre Projektdatei aufnehmen wollen . Weitere Informationen finden Sie unter https://aka.ms/sdkimplicititems . Das doppelte Elemente waren: 'wwwroot/css/BasicQuotation.css'; 'wwwroot/js/BasicQuotation.js' [/mnt/c/Dev/myproject/MyProject/MyProject.csproj]

Der Build ist fehlgeschlagen. Bitte beheben Sie die Build-Fehler und führen Sie den Vorgang erneut aus.

Ich kann dies beheben, indem ich die ItemGroup aus meiner csproj-Datei entferne, aber das finde ich nicht sehr produktiv.

Dies geschieht in der Standardvorlage von ASP.NET Core-Webanwendung (.NET Core) von Visual Studio 2017. Ich füge die Dateien zu meinem Projekt hinzu, indem Sie mit der rechten Maustaste auf den Ordner wwwroot> js klicken und dann Add > New Item > JavaScript File auswählen.

Dies ist meine .csproj-Datei:

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

Also bin ich auf dasselbe Thema gestoßen. Ich wollte DefaultCompileItems nicht deaktivieren, da ich wusste, dass das Problem nicht "behoben" werden würde. Also habe ich mein Projekt entladen und die .csproj-Datei im Textmodus in Visual Studio geöffnet und dies gesehen.

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

Als ich den ersten ItemGroup-Block auskommentiert habe, hat es funktioniert. Ich gehe davon aus, dass das Projekt den gesamten\images\friends-eating\-Ordner und dann jedes einzelne Bild hinzufügt, was zu einer Verdoppelung führt. 

Was die benutzerdefinierten Dateien css und js angeht, fügt das Projekt automatisch wwwroot\css und wwwroot\js hinzu. Wenn Sie also eine einzelne Datei hinzugefügt haben (z. B. wwwroot\css\custom-bootstrap-navbar.css), gilt sie als Duplikat.

92
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'
162
Dzhefer

Das hat in meinem Fall funktioniert:

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

Es ist passiert, wenn ich mein Projekt gerade von .NET Core 1.X auf 2.0 aktualisiere. Hier ist meine Lösung.

  • Öffnen Sie xxx.csproj oder klicken Sie mit der rechten Maustaste auf ein Projekt
  • Projekt entladen
  • Bearbeiten Sie xxx.csproj.

Entfernen Sie dann ItemGroup-Elemente, die mit <Content Include = "wwwroot\xxxxx" beginnen.

12
wtf512

Meine Probleme waren nahe, aber nicht die gleichen. Mein Fehler war folgender:

C:\Programme\dotnet\sdk\2.0.0-preview2-006497\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.Sdk.DefaultItems.targets (285,5): Fehler: Doppelte 'Content'-Elemente waren enthalten. Das .NET SDK enthält standardmäßig "Content" -Elemente aus Ihrem Projektverzeichnis. Sie können diese Elemente entweder aus Ihrer Projektdatei entfernen oder die Eigenschaft 'EnableDefaultContentItems' auf 'false' setzen, wenn Sie sie explizit in Ihre Projektdatei einschließen möchten. Weitere Informationen finden Sie unter https://aka.ms/sdkimplicititems . Die doppelten Elemente waren: '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-Projekte\Zeitkarte\Avantia-Timesheet\Lösung\Almanac\Almanac.csproj]

Wenn ich das gemacht habe:

<EnableDefaultContentItems>false</EnableDefaultContentItems>

Es würde nicht kompilieren, da alle plötzlichen Areas nicht erkannt würden.

Meine Lösung scheint merkwürdig, aber die Nachricht sagt mir, es gab doppelte Dateien:

Die doppelten Elemente waren: 'wwwroot\js\KOBindings.js'; 'wwwroot\js\KOPleaseWait.js'; 'wwwroot\js\ProjectTime\Add.js'; 'wwwroot\js\TimeAdmin\Invoice.js'; 'wwwroot\js\TimeAdmin\PayPeriodTotals.js' 

Betrachten meiner .csproj-Datei:

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

Dies war der EINZIGE Ort innerhalb des gesamten Projekts, an dem diese Dateien Referenzen waren (abgesehen von dem Ort, an dem sie geladen wurden.) Daher macht der Ausdruck duplicate für mich keinen Sinn. Durch das Auskommentieren dieser Dateien als solches wurde jedoch mein Problem gelöst:

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

Ich gehe davon aus, dass dies etwas mit dem 2.0.0-preview2-006497 zu tun hat, den ich kürzlich installiert habe.

Auch in diesem link wird von Globs gesprochen. Aber sag mir nicht, wo das ist. Es geht um SDKs und so. Die Antwort waren jedoch meine benutzerdefinierten .js-Dateien. Dieser Link muss auf IMHO aktualisiert oder erweitert werden. Hoffe das hilft jemandem.

10
Grandizer

Wie link sagt , können Sie dieses Verhalten deaktivieren (Auto-Include) und den gesamten Inhalt explizit einschließen, indem Sie ihn in Ihre csproj-Datei einfügen:

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

Tatsächlich schließt Asp.net Core automatisch Inhalte von wwwroot\css\, wwwroot\js\ und wwwroot\lib\ ein. Wenn also Ihre csproj-Datei explizit Inhalte aus diesen Verzeichnissen enthält, werden diese Inhalte dupliziert, sodass das Entfernen von Inhalten aus der csproj-Datei die bessere Lösung ist dieses Fehlers. So entfernen Sie unten den Inhalt-

  <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

In meinem Fall löste ich dies, indem ich alle Dateien aus dem wwwroot-Verzeichnis in VS löschte. Entladen Sie das Projekt und laden Sie es erneut. Kopieren Sie alle Dateien wieder mit VS. Erledigt

2
Alex Freund

Unter Visual Studio 2017 15.3 mit .NET Core 2.0 arbeitete. EnableDefaultCompileItems für mich nicht.

Ich musste dies meinem .csproj hinzufügen

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

Nicht, dass ich es in Ihrem Beispiel oben sehen kann, um anderen SO - Suchern zu helfen.

Sie können diesen Fehler auch erhalten, wenn Sie dieselbe Datei zweimal in <Content Include="xxx" />-Elementen in Ihrer csproj-Datei aufgeführt haben.

Entfernen Sie das Duplikat und bauen Sie es erneut auf.

1
Sam

Ich denke, dass das Deaktivieren von "EnableDefaultContentItems" nicht die beste Option ist Die manuelle Bearbeitung von cs-Proj-Dateien ist auch nicht die beste Idee.

Für unsere Build-Server-Pipeline haben wir ein sehr kleines Tool geschrieben, das Entfernen alle doppelten Einträge automatisch erstellt: dotnet-csproj-cleaner

Wir führen es unter Docker als ersten Build-Schritt unserer kontinuierlichen Integrationspipeline durch.

1
anakod

Mein Fall, dass ich den Bot unter den Standardeinträgen deaktiviert habe.

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

Ich habe eine andere richtige Lösung gefunden. 

  1. Klicken Sie mit der rechten Maustaste auf Ihr MVC-Projekt, und klicken Sie auf Edit csproj. 
  2. Wenn Sie Dateien unter "wwwroot" hinzufügen, verschieben Sie sie einfach in einen Ordner unter "wwwroot".

Und löschen Sie alle Content-Tags in der csproj-Datei, sofern vorhanden, ein Beispiel.

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

Und nur das hinzufügen;

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

Die Datei csproj sollte also so aussehen.

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

Auf diese Weise denke ich, dass Sie alle Dateien unter dem Themenordner hinzufügen. Fügen Sie sie also nicht einzeln hinzu, was zu Fehlern führt.

1
Lost_In_Library

Ich hatte das gleiche Problem nur mit einer Datei, und alle anderen arbeiteten (alle meine Vorlagen wurden direkt in wwwroot/content gespeichert). Das Projekt wurde nicht von mir erstellt, daher kenne ich nicht viele Details.

Das Problem wurde behoben durch: Umbenennen vor/zurück Datei mit dem Problem:

MyTemplate.html - umbenannt -> MyTemplate2.html - umbenannt -> MyTemplate.html

Hinweis : Beim ersten Umbenennen bekam ich einen Fehler mit etwas wie "content configuration not found", aber das zweite Umbenennen funktionierte ohne Probleme.

Danach konnte ich das Projekt erfolgreich kompilieren.

0
Razvan

.NET-Kernprojekte

Wenn Sie sich in einer Klassenbibliothek befinden, müssen Sie wahrscheinlich alle Compile/Content-Elemente aus Ihrem csproj entfernen, da diese automatisch enthalten sind. 

<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

Die Ordner mit Duplikaten ausschließen und einschließen, die für mich fehlerhaft waren! Hoffe das hilft jemand anderem!

0
revobtz