.NET Core 1.1 — добавлено получение повторяющихся элементов «контента»

Я обновил свой VS2017 до последней версии 15.3.0 и установил .NET Core SDK 2.0 (я хотел бы обновить существующее приложение .NET 1.1 до версии 2.0).

Теперь, когда я открываю свой проект, который компилировался нормально (еще ничего в нем не менялось), и пытаюсь скомпилировать, я получаю:

Duplicate 'Content' items were included.
The .NET SDK includes 'Content' items from your project directory by default.
You can either remove these items from your project file, or set the 'EnableDefaultContentItems' property to 'false' if you want to explicitly include     them in your project file.
For more information, see https://aka.ms/sdkimplicititems. The duplicate items were: 'wwwroot\index.html'

Под проблемным файлом он указывает на C:\Program Files\dotnet\sdk\2.0.0\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.Sdk.DefaultItems.targets

Я читал в Интернете, и я могу решить эту проблему, добавив <EnableDefaultContentItems>false</EnableDefaultContentItems> в свой файл .csproj. Но раньше этого не было, и я не уверен, что означает добавление этой строки.

Единственное, что меня действительно беспокоит, это то, что исходный файл, на который он указывает, находится в dotnet\sdk\2.0.0, и, как я уже упоминал, проект по-прежнему .NET Core 1.1. Все, что я сделал до сих пор, это установил обновление для VS2017 и SDK 2.0.

Как мне это решить? Я хотел бы, чтобы мой исходный проект скомпилировался, прежде чем я обновлю его до версии 2.0.

ИЗМЕНИТЬ

Мой csproj файл:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp1.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Content Include="wwwroot\index.html" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="IdentityServer4" Version="1.5.2" />
    <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore" Version="1.1.2" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.2" />
    <PackageReference Include="NLog.Web.AspNetCore" Version="4.4.1" />
  </ItemGroup>
  <ItemGroup>
    <Content Update="appsettings.json">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Update="web.config">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
  </ItemGroup>
  <ItemGroup>
    <None Update="NLog.config">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
  </ItemGroup>

</Project>

Как уже упоминалось, если я добавлю <EnableDefaultContentItems>false</EnableDefaultContentItems> к PropertyGroup, это сработает. Но я не знаю, что это значит и зачем это вдруг нужно...


person developer82    schedule 16.08.2017    source источник
comment
Это проблема в вашем файле csproj, вам нужно поделиться ею, чтобы мы могли вам помочь.   -  person Martin Ullrich    schedule 16.08.2017
comment
@MartinUllrich отредактировал мой вопрос   -  person developer82    schedule 16.08.2017


Ответы (2)


Удалите элемент <ItemGroup>, содержащий

<Content Include="wwwroot\index.html" />

Этот элемент уже включен в Microsoft.NET.Sdk.Web и поэтому определен дважды.

person Martin Ullrich    schedule 16.08.2017

Некромантия.
Или сделайте следующее:

  1. Нажмите «Показать все файлы» в обозревателе решений.
  2. Щелкните правой кнопкой мыши «wwwroot», выберите «Исключить из проекта».
  3. Щелкните правой кнопкой мыши «wwwroot», выберите «Включить в проект».

Теперь ошибка исчезла.
Гораздо безопаснее, чем редактировать вручную.

person Stefan Steiger    schedule 20.09.2017