修复了“包含重复的‘编译’项目。” Visual Studio 中出现错误

问题描述 投票:0回答:3

这是一个非常烦人的 VS 错误,我使用的是 VS 2019 16.8.1

我花了很多时间来修复它:

包含重复的“编译”项目。 .NET SDK 包括 默认情况下从项目目录“编译”项目。你可以 从项目文件中删除这些项目,或设置 如果需要,可将“EnableDefaultCompileItems”属性设置为“false” 明确地将它们包含在您的项目文件中。了解更多信息, 请参阅https://aka.ms/sdkimplicititems。重复的项目是: 'Program.cs' 服务.主机 文件\dotnet\sdk .0.101\Sdks\Microsoft.NET.Sdk argets\Microsoft.NET.Sdk.DefaultItems.targets 295

我不明白是什么原因导致了这个错误。 我注释掉了*.csproj文件中的

Include
标签,但问题是我有30多个项目,突然它们都有相同的重复错误,遍历所有项目来修复这样一个神秘的错误似乎不安全的操作,其中一些项目是很长时间没有被触及的遗留项目。 评论
Include
标签的解决方案中的另一个问题是我有一些具有此包含结构的项目:

  <ItemGroup>
    <Compile Include="Contracts.cs" />
    <Compile Include="IKey.cs">
      <DependentUpon>Contracts.cs</DependentUpon>
    </Compile>
    <Compile Include="ISigner.cs">
      <DependentUpon>Contracts.cs</DependentUpon>
    </Compile>
  </ItemGroup>

评论这会影响项目结构。

我尝试注释掉文件中的

CheckForDuplicateItems
标签:

“C:\ Program Files \ dotnet \ sdk .0.101 \ Sdks \ Microsoft.NET.Sdk argets \ Microsoft.NET.Sdk.DefaultItems.targets”,

错误就消失了。

编辑

我刚刚注意到.NET 5版本(..\sdk .0.101..)包含在目标文件路径中,我只有一个.NET 5项目,这会导致问题吗?

msbuild visual-studio-2019 .net-5
3个回答
3
投票

.NET5 使用新样式的项目,它会自动将许多文件包含到您的项目中。这有助于保持项目文件较小,并且不会导致每次添加、删除或重命名文件时都检出和更改它们。一次为所有项目解决此问题的最简单方法可能是在项目的根文件夹中添加

directory.build.props
,以一次性为所有项目设置
<EnableDefaultCompileItems>false<EnableDefaultCompileItems>

<Project>
    <PropertyGroup>
         <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
    </PropertyGroup>
</Project>

请勿编辑 sdk 目录中的任何文件,它们是当前和未来所有项目的默认设置。相反,您可以将这些设置添加到项目文件或解决方案全局文件的这些目录中,以针对特定文件夹或解决方案中的项目更改它们。

参见:


0
投票

Theo 对我有用的唯一解决方案是从项目中排除

obj
文件夹。


0
投票

从 csproj 中删除 .cs 文件,因为它们会自动被视为项目的一部分。

© www.soinside.com 2019 - 2024. All rights reserved.