包含重复的“编译”项目
Posted
技术标签:
【中文标题】包含重复的“编译”项目【英文标题】:Duplicate 'Compile' items were included 【发布时间】:2020-06-08 06:52:46 【问题描述】:我刚刚向一个新的 Asp .net 核心项目添加了一个 SOAP Web 服务。当我尝试构建项目时,会导致以下错误。
Microsoft.NET.Sdk.DefaultItems.targets(295, 5):[NETSDK1022] 。默认情况下,.NET SDK 包含项目目录中的“编译”项。您可以从项目文件中删除这些项目,或者如果您想将它们明确包含在项目文件中,则将“EnableDefaultCompileItems”属性设置为“false”。有关详细信息,请参阅https://aka.ms/sdkimplicititems。重复的项目是:'Service References/WebService/WebService.cs'
经过一番谷歌搜索后,当人们重命名文件时,我看到了类似的错误。但我没有重命名任何东西,这是一个新项目,我只添加了网络服务。
我检查了 .csproj 文件并得到了这个
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<EnableDefaultContentItems>false</EnableDefaultContentItems>
</PropertyGroup>
<ItemGroup>
<Reference Include="System.ServiceModel" />
</ItemGroup>
<ItemGroup>
<WCFMetadata Include="Service References" />
</ItemGroup>
<ItemGroup>
<WCFMetadataStorage Include="Service References\testing" />
<WCFMetadataStorage Include="Service References\WebService" />
</ItemGroup>
<ItemGroup>
<None Include="Service References\WebService\WebService.svcmap">
<Generator>WCF Proxy Generator</Generator>
<LastGenOutput>WebService.cs</LastGenOutput>
</None>
<None Include="Service References\WebService\WebService.webref" />
<None Include="Service References\WebService\WebService.wsdl" />
</ItemGroup>
<ItemGroup>
<Compile Include="Service References\WebService\WebService.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>WebService.svcmap</DependentUpon>
</Compile>
</ItemGroup>
</Project>
我只看到一个编译器,所以不知所措也明白什么是重复的。我确实尝试了EnableDefaultCompileItems
,但没有解决问题。但是考虑到它的作用,我并不喜欢它在那里,即使它确实有效。
如能帮助您了解此问题的原因并加以解决,我们将不胜感激。
注意:我使用的是 Rider 而不是 Visual Studio
更新
我确实找到了这个链接,这表明它在骑手中存在问题以及它如何添加网络服务Rider Creates Incorrect Webservice References for ASP .NET Core projects.
我不确定这是不是同一个问题。因为我创建了一个 .net core web api 而不是 asp .net core 项目。
更新 2
在项目文件中的元素上,如果您将“包含”更改为“更新”,是否可以解决问题?
以上是来自推特的建议。它似乎消除了原始错误,但随后导致大量名称空间错误。
WebService.cs(727, 82): [CS0234] 命名空间“System.ServiceModel”中不存在类型或命名空间名称“IClientChannel”(您是否缺少程序集引用?)
【问题讨论】:
你好,DalmTo。你有tested this吗? 我可能错了,但我不认为 .net 核心有 wwwroot 文件夹,至少我看不到。 «根据设计,空项目模板不会添加 wwwroot 文件夹、控制器文件夹、模型文件夹等。»,在一条评论中 here 【参考方案1】:从rider issue 获取密钥,这可能是骑手如何添加 Web 服务的问题。
我启动到 Windows 并启动了 Visual Studio。我能够毫无问题地添加服务。
然后我将该项目带回 Linux 和 Rider。
我开始演奏这两个。我发现的第一个区别是 Rider 没有创建连接的服务目录及其所有内容。 ConnectedService.json
很重要?
第二个是对 .csproj 文件的一些重大更改
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.ServiceModel.Duplex" Version="4.4.*" />
<PackageReference Include="System.ServiceModel.Http" Version="4.4.*" />
<PackageReference Include="System.ServiceModel.NetTcp" Version="4.4.*" />
<PackageReference Include="System.ServiceModel.Security" Version="4.4.*" />
</ItemGroup>
<ItemGroup>
<WCFMetadata Include="Service References" />
</ItemGroup>
</Project>
基本上,您需要添加适当的 PackageReference 并删除许多不需要的 ItemGroup。由于 .csproj 文件的验证方式发生了变化。
【讨论】:
是的,好像是Rider的bug。您可能会看到其他人是否已向 JetBrains 报告,youtrack.jetbrains.com/issues/RIDER 您可能想检查我的问题中的更新号 1。 :) 找到该报告会导致解决方案。【参考方案2】:我发现我在 Google Cloud Run 上遇到了这个错误。我发现我的控制器出现了命名空间错误。纠正错误 NETSDK1022:不再出现重复的“编译”项目。错误出现在 .Net Core 5 Web.API 上。我也在使用 Rider,它把我带到了这里。
【讨论】:
以上是关于包含重复的“编译”项目的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 10b5 - 重复符号链接器错误,无法使用 Crashlytics 编译
为啥某些 LLVM 标准库标头包含其他标头但 GCC 不 [重复]
包含重复的“内容”项目。默认情况下,.NET SDK 包含项目目录中的“内容”项