Za każdym razem, gdy dodaję plik javascript lub css do mojego podstawowego projektu asp.net i wykonuję dotnet run
w terminalu bash, pojawia się następujący błąd:
/usr/share/dotnet/sdk/1.0.1/Sdks/Microsoft.NET.Sdk/build/Microsoft
.NET.Sdk.DefaultItems.targets (188,5): błąd: uwzględniono zduplikowane elementy „Treść”. Zestaw .NET SDK domyślnie zawiera elementy „Treść” z katalogu projektu. Możesz usunąć te elementy z pliku projektu lub ustawić właściwość „EnableDefaultContentItems” na „false”, jeśli chcesz jawnie uwzględnić je w pliku projektu. Aby uzyskać więcej informacji, zobacz https://aka.ms/sdkimplicititems . Zduplikowane pozycje to: „wwwroot / css / BasicQuotation.css”; „wwwroot / js / BasicQuotation.js” [/mnt/c/Dev/myproject/MyProject/MyProject.csproj]
Kompilacja nie powiodła się. Popraw błędy kompilacji i uruchom ponownie.
Mogę to naprawić, usuwając ItemGroup
plik z mojego pliku csproj, ale nie sądzę, aby to było zbyt wydajne.
Dzieje się tak w domyślnym szablonie aplikacji sieci Web ASP.NET Core programu Visual Studio 2017 (.NET Core). Dodaję pliki do mojego projektu, klikając prawym przyciskiem myszy folder wwwroot> js, a następnie wybierającAdd > New Item > JavaScript File
To jest mój plik .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>
Odpowiedzi:
Więc napotkałem ten sam problem. Nie chciałem wyłączać DefaultCompileItems, ponieważ wiedziałem, że to nie „rozwiąże” problemu. Zwolniłem więc projekt i otworzyłem plik .csproj w trybie tekstowym w programie Visual Studio i zobaczyłem to.
<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>
Kiedy skomentowałem pierwszy blok ItemGroup, zadziałało. Zakładam, że dzieje się tak, że projekt polega na dodaniu całego folderu \ images \ friends-eating \, a następnie dodaniu każdego pojedynczego obrazu, powodując duplikację.
Jeśli chodzi o niestandardowe css i js, projekt automatycznie dodaje wwwroot \ css i wwwroot \ js, więc jeśli masz dodany pojedynczy plik (np. Wwwroot \ css \ custom-bootstrap-navbar.css), będzie się liczył jako duplikat.
źródło
<Folder Include="wwwroot\" />
mnie to działa, ale studio wizualne1. 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'
źródło
To zadziałało w moim przypadku:
<PropertyGroup> ... <EnableDefaultContentItems>false</EnableDefaultContentItems> </PropertyGroup>
źródło
Stało się tak, gdy właśnie teraz uaktualniam swój projekt z .NET Core 1.X do 2.0. Oto moje rozwiązanie.
Następnie usuń elementy ItemGroup zaczynające się od
<Content Include = "wwwroot\xxxxx"
źródło
Moje problemy były bliskie, ale nie takie same. Mój błąd był taki:
Gdybym to zrobił:
<EnableDefaultContentItems>false</EnableDefaultContentItems>
Nie skompilowałby się, ponieważ nagle
Areas
nie zostałby rozpoznany.Moje rozwiązanie wydaje się dziwne, ale komunikat mówi mi, że były zduplikowane pliki:
Patrząc na mój
.csproj
plik:<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>
To była JEDYNA lokalizacja w całym projekcie, w której te pliki były odniesieniami (poza miejscem ich załadowania). Zatem wyrażenie Duplikat nie ma dla mnie żadnego sensu. Jednak skomentowanie tych plików jako takich rozwiązało mój problem:
<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>
Zakładam, że ma to coś wspólnego z tym
2.0.0-preview2-006497
, co ostatnio zainstalowałem.Również ten link wspomina o rozmowach o globach. Ale nie mówi mi, gdzie to jest. Mówi o SDK i tym podobnych. Jednak odpowiedzią były moje
.js
pliki niestandardowe . Ten link należy zaktualizować lub rozszerzyć w IMHO. Mam nadzieję, że to komuś pomoże.źródło
Jak mówi link , możesz wyłączyć to zachowanie (automatyczne dołączanie) i jawnie dołączyć całą zawartość, dodając to do swojego
csproj
pliku:<PropertyGroup> <EnableDefaultContentItems>false</EnableDefaultContentItems> </PropertyGroup>
źródło
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.
W moim przypadku rozwiązałem to, usuwając wszystkie pliki z katalogu wwwroot-Directory w VS. Usuń i ponownie załaduj projekt. Skopiuj wszystkie pliki z powrotem za pomocą VS. Gotowe
źródło
Projekty .NET Core
Jeśli jesteś w bibliotece klas, prawdopodobnie będziesz musiał usunąć wszystkie elementy Compile / Content ze swojego csproj, ponieważ są one dołączane automatycznie.
<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>
źródło
Właściwie Asp.net rdzeń automatycznie obejmuje treści z
wwwroot\css\
,wwwroot\js\
iwwwroot\lib\
lokalizację, więc mimo to jeślicsproj
plik wyraźnie zawierać treści z tych katalogów, a następnie tych, zawartość zostanie powielony usunięcie treści z ciebiecsproj
plik jest lepszy sposób, aby pozbyć się tego błędu. Więc usuń poniższą zawartość-<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>
źródło
<PropertyGroup> <EnableDefaultContentItems>false</EnableDefaultContentItems> </PropertyGroup>
plik do pliku .csproj.EnableDefaultContentItems
czy nie. Są to dwa różne podejściaW moim przypadku wyłączam oba poniższe elementy domyślne.
<EnableDefaultContentItems>false</EnableDefaultContentItems> <EnableDefaultItems>false</EnableDefaultItems>
źródło
Nie to, żebym mógł to zobaczyć w powyższym przykładzie, aby pomóc innym wyszukiwarkom SO.
Możesz również otrzymać ten błąd, gdy ten sam plik jest wymieniony dwukrotnie w
<Content Include="xxx" />
elementachcsproj
pliku.Usuń duplikat i odbuduj.
źródło
W programie Visual Studio 2017 15.3 z .NET Core 2.0 EnableDefaultCompileItems nie działało dla mnie.
Musiałem dodać to do mojego .csproj
<PropertyGroup> <EnableDefaultContentItems>false</EnableDefaultContentItems> </PropertyGroup>
źródło
Znalazłem inne właściwe rozwiązanie.
I usuń wszystkie tagi treści w pliku csproj, jeśli istnieją, przykład;
<Content Include="wwwroot\theme\favicon.ico" /> <Content Include="wwwroot\theme\fonts\cyrillic-ext400.woff2" /> <Content Include="wwwroot\theme\fonts\cyrillic-ext700.woff2" />
I tylko dodaj to;
<ItemGroup> <Folder Include="wwwroot\theme\" /> </ItemGroup>
Zatem plik csproj powinien wyglądać tak;
<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" /> ...
W ten sposób myślę, że dodajesz wszystkie pliki do folderu motywu. Więc nie dołączaj ich jeden po drugim, co powoduje pewne błędy.
źródło
Wykluczanie i włączanie z powrotem folderów, które mają błąd duplikatów, zadziałało dla mnie! Mam nadzieję, że to pomoże komuś innemu!
źródło
Myślę, że wyłączenie „EnableDefaultContentItems” nie jest najlepszą opcją. podręcznik
cs-Proj
edycja plików również nie jest dobrym pomysłem.Dlatego dla naszego potoku serwera kompilacji napisaliśmy bardzo małe narzędzie, które automatycznie usunie wszystkie zduplikowane wpisy: dotnet-csproj-cleaner
Uruchamiamy go w Dockerze jako pierwszy krok kompilacji w naszym potoku ciągłej integracji.
źródło
Miałem ten sam problem tylko z plikiem, a wszystkie inne działały (wszystkie moje szablony były przechowywane bezpośrednio w wwwroot / content). Projekt nie został stworzony przeze mnie, więc nie znam wielu szczegółów.
Problem został rozwiązany przez zmianę nazwy pliku, w którym pojawił się problem:
MyTemplate.html - zmieniono nazwę -> MyTemplate2.html - zmieniono nazwę -> MyTemplate.html
Uwaga : przy pierwszej zmianie nazwy pojawił się błąd z czymś w rodzaju „ Nie znaleziono konfiguracji zawartości ”, ale druga zmiana nazwy działała bez problemów.
Po tym udało mi się pomyślnie skompilować projekt.
źródło