Я создаю основной 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>
Сгенерированный код кажется правильным, но у меня есть эта ошибка:
Были включены повторяющиеся элементы «Скомпилировать». Пакет SDK для .NET по умолчанию включает элементы «Компилировать» из каталога вашего проекта. Вы можете либо удалить эти элементы из файла проекта, либо установить для свойства EnableDefaultCompileItems значение false, если хотите явно включить их в файл проекта. Дополнительные сведения см. на странице https://aka.ms/sdkimplicititems. Повторяющиеся элементы: «Ссылки на службы\FooBar\FooBar.cs».
Я прочитал другой вопрос об этой проблеме: ответ заключается в том, что есть 2 элемента компиляции с одинаковым именем. Если я понимаю сообщение об ошибке, файл сначала добавляется по умолчанию, потому что он находится в папке .csproj
, и добавляется снова по пункту <Compile Include="Service References\FooBar\FooBar.cs">
.
Я предполагаю, что это ошибка генерации кода веб-службы Rider, но какой может быть обходной путь, не испортив автоматически сгенерированный код? Я знаю, что могу деактивировать флаг EnableDefaultCompileItems
, но я я предпочитаю не делать этого, потому что я предпочитаю такое поведение.
Я попытался заменить Include
на Update
, как показано в этом ответе, но затем у меня есть куча ошибок компиляции, которые говорят : Имя типа или пространства имен "ServiceModel" не существует в пространстве имен "System" (вам не хватает ссылки на сборку?), хотя оно включено.
Directory.Build.props
в папке решения? - person Lasse V. Karlsen   schedule 23.05.2019Include
наUpdate
. Другая ошибка не имеет ничего общего с этой проблемой -_-. Не уверен, что мне делать, поскольку ответ, который я связал, не помечен как ответ: это дубликат, да? - person Boiethios   schedule 23.05.2019