包含重复的“编译”项目

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 包含项目目录中的“内容”项

构建包含专有库的maven项目[重复]

mongodb:查询以检查数组中的项目是不是包含特定字符串[重复]

合并包含在一个大列表中的重复项目的列表