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>
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.
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'
Das hat in meinem Fall funktioniert:
<PropertyGroup>
...
<EnableDefaultContentItems>false</EnableDefaultContentItems>
</PropertyGroup>
Es ist passiert, wenn ich mein Projekt gerade von .NET Core 1.X auf 2.0 aktualisiere. Hier ist meine Lösung.
Entfernen Sie dann ItemGroup-Elemente, die mit <Content Include = "wwwroot\xxxxx"
beginnen.
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.
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>
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>
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
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>
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.
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.
Mein Fall, dass ich den Bot unter den Standardeinträgen deaktiviert habe.
<EnableDefaultContentItems>false</EnableDefaultContentItems>
<EnableDefaultItems>false</EnableDefaultItems>
Ich habe eine andere richtige Lösung gefunden.
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.
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.
.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>
Die Ordner mit Duplikaten ausschließen und einschließen, die für mich fehlerhaft waren! Hoffe das hilft jemand anderem!