Ошибка «Дублировать элементы компиляции» при создании кода из «Добавить веб-ссылку» в Rider - PullRequest
0 голосов
/ 23 мая 2019

Я создаю базовый API .NET, который использует веб-сервис с Rider IDE.

Я создал новый csproj FooBar.Service и добавил веб-ссылку.Файл FooBar.Service.csproj выглядит следующим образом:

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

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <WCFMetadata Include="Service References" />
  </ItemGroup>

  <ItemGroup>
    <WCFMetadataStorage Include="Service References\FooBar" />
  </ItemGroup>

  <ItemGroup>
    <None Include="App.config" />
    <None Include="Service References\FooBar\FooBar.svcmap">
      <Generator>WCF Proxy Generator</Generator>
      <LastGenOutput>FooBar.cs</LastGenOutput>
    </None>
    <None Include="Service References\FooBar\FooBar.webref" />
    <None Include="Service References\FooBar\FooBar.wsdl" />
  </ItemGroup>

  <ItemGroup>
    <Compile Include="Service References\FooBar\FooBar.cs">
      <AutoGen>True</AutoGen>
      <DesignTime>True</DesignTime>
      <DependentUpon>FooBar.svcmap</DependentUpon>
    </Compile>
  </ItemGroup>

  <ItemGroup>
    <Reference Include="System.ServiceModel" />
  </ItemGroup>

</Project>

Сгенерированный код кажется правильным, но у меня есть эта ошибка:

Были включены дублирующие элементы 'Compile'..NET SDK по умолчанию включает элементы «Компиляция» из каталога вашего проекта.Вы можете удалить эти элементы из файла проекта или установить для свойства «EnableDefaultCompileItems» значение «false», если вы хотите явно включить их в файл проекта.Для получения дополнительной информации см. https://aka.ms/sdkimplicititems. Повторяющиеся элементы были: «Сервисные ссылки \ FooBar \ FooBar.cs»

Я прочитал другой вопрос об этой проблеме: ответ таков:Есть 2 элемента с одинаковым именем.Если я понимаю сообщение об ошибке, файл сначала добавляется по умолчанию, поскольку он находится в папке .csproj и снова добавляется элементом <Compile Include="Service References\FooBar\FooBar.cs">.

Я полагаю, что этоошибка генерации кода веб-службы Rider, но , что может быть обходным путем, если не вмешиваться в автоматически сгенерированный код? Я знаю, что могу деактивировать флаг EnableDefaultCompileItems, но я бы предпочел этого не делать, потому чтоЯ предпочитаю такое поведение.

Я пытался заменить Include на Update, как видно из этого ответа , но затем у меня есть куча ошибок компиляции, которая говорит: Тип или имя пространства имен «ServiceModel» не существует в пространстве имен «Система» (отсутствует ссылка на сборку?) , хотя оно включено.

...