Всякий раз, когда я добавляю файл javascript или css в свой основной проект asp.net и выполняю его 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, но я не думаю, что это очень продуктивно.
Это происходит в шаблоне веб-приложения ASP.NET Core (.NET Core) Visual Studio 2017 по умолчанию. Я добавляю файлы в свой проект, щелкнув правой кнопкой мыши папку 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, потому что знал, что это не «решит» проблему. Итак, я выгрузил свой проект, открыл файл .csproj в текстовом режиме в Visual Studio и увидел это.
Когда я закомментировал первый блок ItemGroup, он сработал. Я предполагаю, что происходит то, что проект добавляет всю папку \ images \ friends-eat \, а затем добавляет каждое отдельное изображение, вызывая дублирование.
Что касается пользовательских css и js, проект автоматически добавляет wwwroot \ css и wwwroot \ js, поэтому, если у вас есть добавленный отдельный файл (например, wwwroot \ css \ custom-bootstrap-navbar.css), он будет считаться дубликатом.
источник
<Folder Include="wwwroot\" />
работает для меня, но visual studio отменит это позже :(источник
Это сработало в моем случае:
источник
Это случилось, когда я только что обновил свой проект с .NET Core 1.X до 2.0. Вот мое решение.
Затем удалите элементы ItemGroup, начинающиеся с
<Content Include = "wwwroot\xxxxx"
источник
Мои проблемы были близки, но не то же самое. Моя ошибка заключалась в следующем:
Если бы я сделал это:
Он не будет компилироваться, так как внезапно
Areas
не будет распознан.Мое решение кажется странным, но в сообщении говорится, что были дубликаты файлов:
Глядя на мой
.csproj
файл:Это было ЕДИНСТВЕННОЕ место во всем проекте, где эти файлы были ссылками (помимо того, где они были загружены). Так что фраза « дублировать» не имеет для меня никакого смысла. Однако, комментируя эти файлы как таковые, я решил мою проблему:
Я предполагаю, что это как-то связано с тем,
2.0.0-preview2-006497
что я недавно установил.Также в этой ссылке упоминаются разговоры о глобусах. Но не говорит мне, где это. Он говорит о SDK и тому подобном. Но ответом были мои собственные
.js
файлы. Эту ссылку нужно обновить или расширить ИМХО. Надеюсь, это кому-то поможет.источник
Как говорится в ссылке , вы можете отключить это поведение (автоматическое включение) и явно включить весь контент, добавив это в свой
csproj
файл:источник
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.
В моем случае я решил это, удалив все файлы из wwwroot-Directory в VS. Выгрузите и перезагрузите проект. Скопируйте все файлы обратно с помощью VS. Готово
источник
На самом деле, ядро Asp.net автоматически включать содержание
wwwroot\css\
,wwwroot\js\
иwwwroot\lib\
расположение, поэтому , несмотря на это , если вашcsproj
файл явным образом включить содержимое из этих каталогов , то те , содержание будет дублироваться поэтому удаление содержимого из васcsproj
файла это лучший способ избавиться от этой ошибки. Поэтому удалите содержимое ниже -источник
<PropertyGroup> <EnableDefaultContentItems>false</EnableDefaultContentItems> </PropertyGroup>
в файл .csproj.EnableDefaultContentItems
или нет. Это два разных подходаВ моем случае я отключил оба элемента ниже по умолчанию.
источник
Не то чтобы я мог видеть это в вашем примере выше, чтобы помочь другим искателям ТАК ..
Вы также можете получить эту ошибку, если один и тот же файл дважды указан в
<Content Include="xxx" />
элементах вашегоcsproj
файла.Удалите дубликат и перестройте.
источник
В Visual Studio 2017 15.3 с .NET Core 2.0 EnableDefaultCompileItems у меня не работал.
Мне нужно было добавить это в мой .csproj
источник
Я нашел другое подходящее решение.
И удалите все теги содержимого в файле csproj, если они существуют, например;
И только добавьте это;
Итак, файл csproj должен выглядеть так:
Таким образом, я думаю, вы добавляете все файлы в папку темы. Поэтому не включайте их по одному, так как это может привести к ошибкам.
источник
Проекты .NET Core
Если вы находитесь в библиотеке классов, возможно, вам потребуется удалить все элементы Compile / Content из вашего csproj, поскольку они включаются автоматически.
источник
Исключение и включение обратно папок с ошибкой дубликатов сработали для меня! Надеюсь, это поможет кому-то другому!
источник
Я думаю, что отключение EnableDefaultContentItems - не лучший вариант.
cs-Proj
Редактирование файлов вручную тоже не лучшая идея.Итак, для нашего конвейера сервера сборки мы написали очень маленький инструмент, который автоматически удалит все повторяющиеся записи: dotnet-csproj-cleaner
Мы запускаем его под Docker в качестве первого шага сборки в нашем конвейере непрерывной интеграции.
источник
У меня была такая же проблема только с файлом, а все остальные работали (все мои шаблоны хранились прямо в wwwroot / content). Проект создавался не мной, поэтому я не знаю многих деталей.
Проблема была устранена переименованием файла с ошибкой туда и обратно :
MyTemplate.html - переименован -> MyTemplate2.html - переименован -> MyTemplate.html
Примечание : при первом переименовании у меня возникла ошибка типа « конфигурация содержимого не найдена », но второе переименование прошло без проблем.
После этого мне удалось успешно скомпилировать проект.
источник