Immer wenn ich meinem asp.net-Kernprojekt eine Javascript- oder CSS-Datei hinzufüge und sie dotnet run
in meinem Bash-Terminal ausführe , wird folgende Fehlermeldung angezeigt :
/usr/share/dotnet/sdk/1.0.1/Sdks/Microsoft.NET.Sdk/build/Microsoft
.NET.Sdk.DefaultItems.targets (188,5): Fehler: Doppelte 'Content'-Elemente wurden eingeschlossen. 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 aufnehmen möchten. Weitere Informationen finden Sie unter https://aka.ms/sdkimplicititems . Die doppelten 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 sie erneut aus.
Ich kann das beheben, indem ich das ItemGroup
aus meiner csproj-Datei entferne, aber ich denke nicht, dass das sehr produktiv ist.
Dies geschieht in der Standardvorlage für Visual Studio 2017 ASP.NET Core-Webanwendungen (.NET Core). Ich füge die Dateien meinem Projekt hinzu, indem ich mit der rechten Maustaste auf den Ordner wwwroot> js klicke und dann auswähleAdd > New Item > JavaScript File
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>
Antworten:
Also bin ich auf dasselbe Problem gestoßen. Ich wollte DefaultCompileItems nicht deaktivieren, weil ich wusste, dass dies das Problem nicht "beheben" würde. Also habe ich mein Projekt entladen und die .csproj-Datei im Textmodus in Visual Studio geöffnet und dies gesehen.
Als ich den ersten ItemGroup-Block auskommentierte, funktionierte es. Ich gehe davon aus, dass das Projekt den gesamten Ordner \ images \ friends-eating \ und dann jedes einzelne Bild hinzufügt, was zu einer Duplizierung führt.
In Bezug auf das benutzerdefinierte CSS und JS fügt das Projekt automatisch wwwroot \ css und wwwroot \ js hinzu. Wenn Sie also eine einzelne Datei hinzugefügt haben (wie wwwroot \ css \ custom-bootstrap-navbar.css), wird diese als Duplikat gezählt.
quelle
<Folder Include="wwwroot\" />
funktioniert für mich, aber Visual Studio macht das später rückgängig :(quelle
Das hat in meinem Fall funktioniert:
quelle
Es passierte, als ich mein Projekt gerade von .NET Core 1.X auf 2.0 aktualisierte. Hier ist meine Lösung.
Entfernen Sie dann ItemGroup-Elemente, die mit beginnen
<Content Include = "wwwroot\xxxxx"
quelle
Meine Probleme waren eng, aber nicht genau gleich. Mein Fehler war folgender:
Wenn ich das getan hätte:
Es würde nicht kompiliert werden, da plötzlich
Areas
nicht mehr erkannt würde.Meine Lösung scheint seltsam, aber die Nachricht sagt mir, dass es doppelte Dateien gab:
Blick auf meine
.csproj
Akte:Dies war der EINZIGE Ort innerhalb des gesamten Projekts, an dem diese Dateien Verweise waren (abgesehen davon, wo sie geladen wurden). Daher macht das Duplikat der Phrase für mich keinen Sinn. Das Auskommentieren dieser Dateien als solche hat sich jedoch um mein Problem gekümmert:
Ich gehe davon aus, dass dies etwas mit dem zu tun hat, was
2.0.0-preview2-006497
ich kürzlich installiert habe.In diesem Link werden auch Gespräche über Globs erwähnt. Aber sagt mir nicht wo das ist. Es geht um SDKs und so. Die Antwort waren jedoch meine benutzerdefinierten
.js
Dateien. Dieser Link muss IMHO aktualisiert oder erweitert werden. Hoffe das hilft jemandem.quelle
Wie der Link sagt , können Sie dieses Verhalten deaktivieren (automatisch einschließen) und den gesamten Inhalt explizit einschließen, indem Sie dies in Ihre
csproj
Datei einfügen:quelle
CSC : error CS5001: Program does not contain a static 'Main' method suitable for an entry point [/mnt/c/Dev/myproject/MyProject/MyProject.csproj] The build failed. Please fix the build errors and run again.
In meinem Fall habe ich dies gelöst, indem ich alle Dateien aus dem wwwroot-Verzeichnis in VS gelöscht habe. Entladen Sie das Projekt und laden Sie es erneut. Kopieren Sie alle Dateien wieder mit VS. Getan
quelle
Eigentlich sind Asp.net Kern automatisch Inhalte aus
wwwroot\css\
,wwwroot\js\
undwwwroot\lib\
Lage, so trotzdem , wenn Ihrecsproj
Datei explizit enthalten Inhalte aus diesen Verzeichnissen dann werden diejenigen Inhalt dupliziert werden , so Entfernen von Inhalten von Ihnencsproj
Datei der bessere Weg ist dieser Fehler loszuwerden. Also entferne unten den Inhalt-quelle
<PropertyGroup> <EnableDefaultContentItems>false</EnableDefaultContentItems> </PropertyGroup>
.csproj-Datei hinzufügen .EnableDefaultContentItems
oder nicht. Sie sind zwei verschiedene AnsatzIn meinem Fall deaktiviere ich beide unter den Standardelementen.
quelle
Nicht, dass ich es in Ihrem obigen Beispiel sehen könnte, um anderen SO-Suchern zu helfen.
Sie können diesen Fehler auch erhalten, wenn dieselbe Datei zweimal in
<Content Include="xxx" />
Elementen in Ihrercsproj
Datei aufgeführt ist.Entfernen Sie das Duplikat und erstellen Sie es neu.
quelle
Unter Visual Studio 2017 15.3 mit .NET Core 2.0 funktionierte EnableDefaultCompileItems für mich nicht.
Ich musste dies zu meiner .csproj hinzufügen
quelle
Ich habe eine andere richtige Lösung gefunden.
Und löschen Sie alle Inhalts-Tags in der csproj-Datei, falls vorhanden, ein Beispiel.
Und füge nur dies hinzu;
Die csproj-Datei sollte also so aussehen.
Auf diese Weise fügen Sie meiner Meinung nach alle Dateien unter dem Themenordner hinzu. Schließen Sie sie also nicht einzeln ein, was zu Fehlern führt.
quelle
.NET-Kernprojekte
Wenn Sie sich in einer Klassenbibliothek befinden, müssen Sie wahrscheinlich alle Kompilierungs- / Inhaltselemente aus Ihrem csproj entfernen, da diese automatisch enthalten sind.
quelle
Das Ausschließen und Zurückschließen der Ordner mit doppelten Fehlern hat bei mir funktioniert! Hoffe das hilft jemand anderem!
quelle
Ich denke, dass das Deaktivieren von "EnableDefaultContentItems" nicht die beste Option ist. Manuelle
cs-Proj
Dateibearbeitung ist auch überhaupt nicht die gute Idee.Für unsere Build-Server-Pipeline haben wir ein sehr kleines Tool geschrieben , mit dem alle doppelten Einträge automatisch entfernt werden: dotnet-csproj-cleanner
Wir führen es unter Docker als ersten Build-Schritt in unserer Pipeline für die kontinuierliche Integration aus.
quelle
Ich hatte das gleiche Problem nur mit einer Datei und alle anderen funktionierten (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, indem die Datei mit dem Problem hin und her umbenannt wurde :
MyTemplate.html - umbenannt -> MyTemplate2.html - umbenannt -> MyTemplate.html
Hinweis : Beim ersten Umbenennen wurde ein Fehler mit dem Titel " Inhaltskonfiguration nicht gefunden " angezeigt, aber beim zweiten Umbenennen funktionierte dies ohne Probleme.
Danach konnte ich das Projekt erfolgreich kompilieren.
quelle