默认情况下,.NETSDK 包含项目目录中的“ Content”项

每当我在 asp.net 核心项目中添加一个 javascript 或 css 文件并在 bash 终端中执行 dotnet run时,都会得到以下错误:

/usr/share/dotnet/sdk/1.0.1/Sdks/Microsoft.NET.Sdk/build/Microsoft

. NET.Sdk. DefaultItems.target (188,5) : error: 重复“ Content” .NETSDK 包括来自您的 默认情况下,您可以从 或将“ EnableDefaultContentItems”属性设置为 “ false”,如果您希望在项目文件中显式包含它们。 有关更多信息,请参见 https://aka.ms/sdkimplicititems 重复的项目是: ‘ wwwroot/css/BasicQuotation.css’; ‘ wwwroot/js/BasicQuotation.js’ [/mnt/c/Dev/MyProject/MyProject/MyProject.csproj ]

生成失败。请修复生成错误并重新运行。

我可以通过从 csproj 文件中删除 ItemGroup来解决这个问题,但是我不认为这是非常有效的。

这在默认的 VisualStudio2017ASP.NET 核心 Web 应用程序(。NET 核心)模板。我通过右键单击 wwwroot > js 文件夹将这些文件添加到我的项目中,然后选择 Add > New Item > JavaScript File

这是我的.csproj 文件:

<Project Sdk="Microsoft.NET.Sdk.Web">


<PropertyGroup>
<TargetFramework>netcoreapp1.1</TargetFramework>
</PropertyGroup>


<PropertyGroup>
<PackageTargetFallback>$(PackageTargetFallback);portable-net45+win8+wp8+wpa81;</PackageTargetFallback>
</PropertyGroup>


<PropertyGroup>
<UserSecretsId>aspnet-MyProject-7e1906d8-5dbd-469a-b237-d7a563081253</UserSecretsId>
</PropertyGroup>


<ItemGroup>
<Compile Remove="wwwroot\lib\jquery-validation\**" />
<Content Remove="wwwroot\lib\jquery-validation\**" />
<EmbeddedResource Remove="wwwroot\lib\jquery-validation\**" />
<None Remove="wwwroot\lib\jquery-validation\**" />
</ItemGroup>


<ItemGroup>
<Content Include="wwwroot\css\BasicQuotation.css" />
<Content Include="wwwroot\js\BasicQuotation.js" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.1.1" PrivateAssets="All" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="1.1.1" PrivateAssets="All" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.0" PrivateAssets="All" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="1.1.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.1" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="1.1.0" PrivateAssets="All" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" />
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="1.0.0" />
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0" />
</ItemGroup>
<ItemGroup>
<Folder Include="Data\Commands\" />
<Folder Include="Data\Queries\" />
<Folder Include="wwwroot\images\" />
</ItemGroup>


</Project>
80877 次浏览

作为 链接说,您可以禁用这种行为(自动包含) ,并通过将其添加到 csproj文件中来显式包含所有内容:

<PropertyGroup>
<EnableDefaultContentItems>false</EnableDefaultContentItems>
</PropertyGroup>

并不是说我可以在你上面的例子中看到它,来帮助其他 SO 搜索者。

如果同一个文件在 csproj文件的 <Content Include="xxx" />元素中列出两次,也可能会出现此错误。

删除副本并重建。

我的情况就是这样:

 <PropertyGroup>
...
<EnableDefaultContentItems>false</EnableDefaultContentItems>
</PropertyGroup>

我的问题很接近,但不完全一样。我的错误是:

C: Program Files dotnet sdk 2.0.0-preview2.006497 Sdks Microsoft.NET.Sdk build Microsoft.NET.Sdk.Target (285,5) : error: 包含重复的“ Content”项。那个。默认情况下,NETSDK 包含项目目录中的“ Content”项。如果希望在项目文件中显式包含这些项,可以从项目文件中删除这些项,或者将“ EnableDefaultContentItems”属性设置为“ false”。有关更多信息,请参见 https://aka.ms/sdkimplicititems。重复的项目是: “ wwwroot js KOBindings.js”; “ wwwroot js KOPleaseWait.js”; “ wwwroot js ProjectTime Add.js”; “ wwwroot js TimeAdmin Invoice.js”; “ wwwroot js TimeAdmin PayperiodTotals.js”[ C: Avantia Projects Time Card Avantia-timesheet Solution Almanac Almanac.csproj ]

如果我这么做:

<EnableDefaultContentItems>false</EnableDefaultContentItems>

它不会编译,因为突然的 Areas不会被识别。

我的解决方案,看起来很奇怪,但信息告诉我,有重复的文件:

重复的项目是: ‘ wwwroot js KOBindings.js’; ‘ wwwroot js KOPleaseWait.js’; ‘ wwwroot js ProjectTime Add.js’; ‘ wwwroot js TimeAdmin Invoice.js’; ‘ wwwroot js TimeAdmin PayperiodTotals.js’

看看我的 .csproj文件:

<ItemGroup>
<Content Include="pdf.js" />
<Content Include="wwwroot\js\package.json" />
<Content Include="wwwroot\js\pdf.js" />
<Content Include="wwwroot\js\KOBindings.js" />
<Content Include="wwwroot\js\KOPleaseWait.js" />
<Content Include="wwwroot\js\ProjectTime\Add.js" />
<Content Include="wwwroot\js\TimeAdmin\Invoice.js" />
<Content Include="wwwroot\js\TimeAdmin\PayPeriodTotals.js" />
</ItemGroup>

这是整个项目中这些文件作为引用的唯一位置(除了加载它们的位置之外)因此,短语 复制品对我来说没有任何意义。然而,将这些文件作为注释删除,解决了我的问题:

<ItemGroup>
<Content Include="pdf.js" />
<Content Include="wwwroot\js\package.json" />
<Content Include="wwwroot\js\pdf.js" />
<!--
<Content Include="wwwroot\js\KOBindings.js" />
<Content Include="wwwroot\js\KOPleaseWait.js" />
<Content Include="wwwroot\js\ProjectTime\Add.js" />
<Content Include="wwwroot\js\TimeAdmin\Invoice.js" />
<Content Include="wwwroot\js\TimeAdmin\PayPeriodTotals.js" />
-->
</ItemGroup>

我假设这与我最近安装的 2.0.0-preview2-006497有关。

此外,这个 链接提到了关于地球仪的讨论。但没告诉我在哪。上面提到了 SDK 之类的东西。然而,答案是我的定制 .js文件。这种联系需要更新或扩大。希望这对谁有帮助。

所以我遇到了同样的问题。我不想关闭 DefaultCompileItems,因为我知道这不会“修复”问题。所以我卸载了我的项目并打开了。Csproj 文件在 VisualStudio 的文本模式下,并看到了这一点。

<ItemGroup>
<Content Include="wwwroot\css\custom-bootstrap-navbar.css" />
<Content Include="wwwroot\images\friends-eating\image1.jpg" />
<Content Include="wwwroot\images\friends-eating\image2.jpg" />
<Content Include="wwwroot\images\friends-eating\image3.jpg" />
</ItemGroup>
<ItemGroup>
<Folder Include="wwwroot\images\friends-eating\" />
</ItemGroup>

当我注释掉第一个 ItemGroup 块时,它工作了。我假设正在发生的是,该项目是添加整个图片的朋友吃文件夹,然后添加每个单独的图片,造成重复。

至于自定义 css 和 js,项目会自动添加 wwwroot css 和 wwwroot js,所以如果您添加了一个单独的文件(比如 wwwroot css custom- bootstrap-navbar)。Css)它将被视为一个复制品。

在 Visual Studio 201715.3下,使用.NET Core 2.0, EnableDefaultCompileItems 对我不起作用。

我需要把它添加到我的.csproj

  <PropertyGroup>
<EnableDefaultContentItems>false</EnableDefaultContentItems>
</PropertyGroup>

当我把我的项目从.NET Core 1.X 升级到2.0的时候,这种情况就发生了。

  • 打开 xxx.csproj,或者右键单击 project
  • 卸载项目
  • 编辑 xxx.csproj。

然后删除从 <Content Include = "wwwroot\xxxxx"开始的 ItemGroup 项

在我的例子中,我通过在 VS 中删除 wwwroot-Directory 中的所有文件来解决这个问题。 卸载并重新加载项目。 用 VS 复制所有文件。 成交

事实上,Asp.net 核心自动包含来自 wwwroot\css\wwwroot\js\wwwroot\lib\位置的内容,所以尽管如此,如果你的 csproj文件显式包含来自这些目录的内容,那么这些内容将被复制,所以从你的 csproj文件中删除内容是摆脱这个错误的更好方法。因此删除以下内容-

  <ItemGroup>
<Compile Remove="wwwroot\lib\jquery-validation\**" />
<Content Remove="wwwroot\lib\jquery-validation\**" />
<EmbeddedResource Remove="wwwroot\lib\jquery-validation\**" />
<None Remove="wwwroot\lib\jquery-validation\**" />
</ItemGroup>


<ItemGroup>
<Content Include="wwwroot\css\BasicQuotation.css" />
<Content Include="wwwroot\js\BasicQuotation.js" />
</ItemGroup>

排除和包括后面的文件夹有重复的错误为我工作! 希望这对其他人有帮助!

1. Click 'Show All Files' in Solution Explorer
2. Right-click over 'wwwroot' select 'Exclude From Project'
3. Right-click over 'wwwroot' select 'Include in Project'

我认为禁用“ EnableDefaultContentItems”不是最好的选择。 手动编辑 cs-Proj文件也不是一个好主意。

因此,对于我们的构建服务器管道,我们编写了一个非常小的工具,它将自动地 拿开所有重复的条目: Dotnet-csproj-clean

我们在 Docker 下运行它,作为持续集成管道中的第一个构建步骤。

我找到了另一个合适的解决办法。

  1. 右键单击 mvc 项目并单击 Edit csproj。
  2. 如果您在 wwwroot 下添加文件,只需将它们移动到 wwwroot 下的一个文件夹,让我们说它是“主题”

并删除所有的内容标签在 csproj 文件,如果他们的存在,一个例子;

<Content Include="wwwroot\theme\favicon.ico" />
<Content Include="wwwroot\theme\fonts\cyrillic-ext400.woff2" />
<Content Include="wwwroot\theme\fonts\cyrillic-ext700.woff2" />

再加上这个

  <ItemGroup>
<Folder Include="wwwroot\theme\" />
</ItemGroup>

所以,csproj 文件应该是这样的;

    <Project Sdk="Microsoft.NET.Sdk.Web">


<PropertyGroup>
<TargetFramework>netcoreapp1.1</TargetFramework>
</PropertyGroup>


<PropertyGroup>
<PackageTargetFallback>$(PackageTargetFallback);portable-net45+win8+wp8+wpa81;</PackageTargetFallback>
</PropertyGroup>


<ItemGroup>
<Folder Include="wwwroot\theme\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.0" />
...

通过这种方式,我认为您正在主题文件夹下添加所有文件。因此,不要把它们一个一个地包括进来,因为它们会出现一些错误。

.NET 核心项目

如果在类库中,可能需要从 csproj 中删除所有 Compile/Content 元素,因为这些元素是自动包含的。

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<!-- NEEDED -->
<ItemGroup>
<ProjectReference />
<ProjectReference />
</ItemGroup>
<!-- NOT NEEDED -->
<ItemGroup>
<Compile Include="Models\ExampleClass.cs" />
<Content ... />
</ItemGroup>
</Project>

我有同样的问题,只有一个文件,和所有其他的工作(我的所有模板直接存储在 wwwroot/content)。这个项目不是我创建的,所以我不知道很多细节。

来回重新命名解决了这个问题的文件与问题:

.html —— rename —— > MyTemplate2.html —— rename —— > MyTemplate.html

注意 : 在第一次重命名时,我得到了一个类似于“ 未找到内容配置”的错误,但是第二次重命名没有问题。

在此之后,我能够成功地编译这个项目。

我的情况下,我是禁用下面两个默认项目。

<EnableDefaultContentItems>false</EnableDefaultContentItems>
<EnableDefaultItems>false</EnableDefaultItems>

我刚刚开始,当我尝试将 wwwroot 文件夹从 Web 应用程序模板复制到使用 API 模板创建的项目时,出现了这个错误。移除 bootstrap 为我解决了这个问题,这很好,因为我只需要 jquery。

因此,对我有效的方法是在解决方案资源管理器中单击有问题的文件,并选择“ Excluse from Project”。然后使用“ Include in Project”重新添加它。

所有在我面前写的答案都没有为我解决“重复”错误,尽管我已经尽职尽责地确保他们建议的程序得到遵守。

对我来说,当我试图在 Nuget Package Manager 中将 WinUI 3应用程序的 SDK 从 Windows App SDK 0.8升级到1.0时,出现了“内容重复”的问题。当我这样做的时候,我的项目开始在每次编译时都产生这个错误,我尝试执行其他人建议的排除/包含方法,但是没有用。

我花了大约八个小时才找到罪魁祸首,那是我在 Windows App SDK 0.8上仍然保留的 另一个 WinUI 库项目的参考资料。一旦我将另一个 WinUI 库项目升级到 SDK 1.0,这个错误就消失了。

把这个答案留在这里,以防对其他人有帮助。

在2010年的一个新的 WinUI 项目中,我遇到了这种情况。只有当我引用一个旧的 WinUI 组件时,我才使用 Net6。通过在旧的 WinUI 组件上执行以下操作,我解决了它和许多其他无法解决的错误(例如,未找到 InitalizeComponent) :

  1. 删除以下软件包

enter image description here

  1. 取而代之的是:

enter image description here

对于.net core 6.0,这个问题解决了:

添加到. csproj 文件

 <ItemGroup>
<Content Update="wwwroot\**\*">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>

我在 Visual Studio for Mac 中重命名了一个类文件,在检查项目文件的 git 更改时,我可以看到它的编辑。删除该文件并将其添加回项目中修复了该问题。