我正在创建一个使用Rider IDE消耗Web服务的.NET核心API。
我创建了一个新的csproj FooBar.Service
,并添加了Web参考。 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>
生成的代码似乎正确,但是出现此错误:
包括重复的“编译”项。默认情况下,.NET SDK包含项目目录中的“编译”项。您可以从项目文件中删除这些项目,也可以将“ EnableDefaultCompileItems”属性设置为“ false”(如果要在项目文件中明确包含这些项目)。有关更多信息,请参见https://aka.ms/sdkimplicititems。重复的项目是:“服务参考\ FooBar \ FooBar.cs”
我已经阅读了有关此问题的另一个问题:答案是有2个同名的编译项。如果我理解该错误消息,则默认情况下首先添加该文件,因为该文件位于.csproj
的文件夹中,然后由<Compile Include="Service References\FooBar\FooBar.cs">
项再次添加。
我想这是Rider Web服务代码生成的一个错误,但是在不弄乱自动生成的代码的情况下,有什么变通办法?我知道我可以停用{{1 }}标志,但我不想这样做,因为我更喜欢这种行为。
我尝试用this answer中的EnableDefaultCompileItems
替换Include
,但是随后出现一堆编译错误,提示:类型或名称空间名称'尽管“服务模型”已包含在内,但它在“系统”命名空间中不存在(您是否缺少程序集引用?)。