59

当我构建我的应用程序时,我收到以下错误

 Error  CS0579  Duplicate 'global::System.Runtime.Versioning.TargetFrameworkAttribute' attribute    MyUIApp
D:\MyUIApp\obj\Debug\netcoreapp3.1\.NETCoreApp,Version=v3.1.AssemblyAttributes.cs   4   Active

以下代码在 obj/Debug/netcoreapp3.1 文件夹中自动生成

// 使用系统;使用 System.Reflection;[程序集:global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v3.1", FrameworkDisplayName = "")]

我有一个项目文件以

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <OutputType>Library</OutputType>
    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
    <RestorePackages>true</RestorePackages>
    <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>
  <PropertyGroup>

我可以通过注释掉文件的内容来解决这个问题,但不能通过删除文件来解决。

4

15 回答 15

76

我在 VS Code 中也遇到了这个错误,下面修复了它。

我有一个项目/解决方案,其中包含三个项目。

  • 网络标准2.1
  • 网络标准2.1
  • netcoreapp3.1

*.csproj我在该部分的每个文件中添加了以下行<PropertyGroup>

<GenerateTargetFrameworkAttribute>false</GenerateTargetFrameworkAttribute>

完整示例

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

  <PropertyGroup>
    <TargetFramework>netstandard2.1</TargetFramework>
    <GenerateTargetFrameworkAttribute>false</GenerateTargetFrameworkAttribute>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  </PropertyGroup>

</Project>

完成上述操作后,您可能需要为每个项目清理/bin和文件夹。/obj

这篇文章为我指明了正确的方向,尽管我在网上发现没有提到上述属性。我只是猜到了,它奏效了!

于 2020-06-18T16:51:28.553 回答
55

将以下两行添加到<PropertyGroup>. 这为我修好了。

<PropertyGroup>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
    <GenerateTargetFrameworkAttribute>false</GenerateTargetFrameworkAttribute>    
</PropertyGroup>
于 2020-09-11T19:53:26.503 回答
20

问题在于我的文件夹结构:测试项目位于主项目文件夹中。在同一个 repo 中并排传递解决了这个问题

MyProject
   src/MyProject.csproj
   tests/MyTestProject.csproj

取自 Github 问题:https ://github.com/dotnet/core/issues/4837

于 2020-06-17T10:02:37.910 回答
8

我通过删除每个项目目录中的 obj 和 bin 文件夹来解决这个问题。然后我清理了解决方案并重建。重建成功。

于 2020-10-07T01:15:51.493 回答
8

您只需obj要从项目/解决方案中排除该文件夹。

于 2021-08-04T17:26:02.520 回答
5

将项目asp.net core 3.1添加到解决方案后,我的应用程序中也遇到了同样的问题。xUnit最终,主要问题是因为我选中了复选框将解决方案和项目放在同一目录中,如上图所示。

在此处输入图像描述

这在正常情况下应该可以工作,您只需将此根目录视为 Git 存储库(.sln文件和.csproj将在同一文件夹中)。但是您将无法将新项目添加到此目录,因为您将收到错误“错误 CS0579 Duplicate 'global::System.Runtime.Versioning.TargetFrameworkAttribute'”。因此,要修复此错误,我们只需按照前面的步骤操作即可。

  1. 在文件中创建同名.sln文件夹
  2. 将所有与项目相关的文件移动到该目录
  3. .sln使用任何代码编辑器打开文件
  4. 编辑项目引用。
  5. 确保您的.sln文件位于根目录中

这就是您的项目文件引用现在的样子。

Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebApplication2", "WebApplication2\WebApplication2.csproj", "{027937D8-D0E6-45A4-8846-C2E28DA102E6}"
EndProject 

Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebApplication2.Tests", "WebApplication2.Tests\WebApplication2.Tests.csproj", "{AD4C6C31-F617-4E76-985A-32B0E3104004}" 
EndProject

而已。只需重新加载您的解决方案并快乐编码!

于 2020-11-19T12:15:22.437 回答
3

我遇到了这个问题,我所做的是我删除了 .NETCoreApp,Version=v3.1.AssemblyAttributes.cs 然后我以管理员身份运行 VSCode。

于 2020-05-28T08:27:05.100 回答
3

所以我确实在基于 .NET 4.7 的解决方案上遇到了同样的问题,花了几个小时,才发现我的一位同事确实在项目中包含了 obj 和 bin 文件夹!排除他们解决了这个问题,那个错误就消失了。

希望这可以节省几个小时。

于 2021-12-03T18:18:59.927 回答
2

我有同样的问题。据我所知,该标志应该防止自动生成程序集信息。但是,我可以在我的 obj 目录中看到这个文件:

.NETStandard,Version=v2.1.AssemblyAttributes.cs

它只包含目标版本属性。也许还有其他方法可以抑制此属性?

看起来这可能是 .NET core 3.1.300 中的回归。我正在使用 .NET core 3.1.200 进行构建,直到升级后才看到这个问题。

于 2020-05-26T11:57:16.177 回答
1

我在 Azure Devops 中的构建管道上遇到过这种情况。我正在使用本地代理在(我自己的机器)上运行管道。似乎工作目录中有导致此冲突的代码,默认情况下,代理在启动管道进程之前不会清理工作目录。

修复是删除代理上工作目录的内容。我通过选择清理工作目录的选项来做到这一点:

清理 Azure Devops 获取源页面中的工作目录

于 2020-08-31T21:13:58.357 回答
1

当我的文件夹结构混乱时,我遇到了这个问题。我正在使用 Visual Studio 2019 并切换了具有不同文件夹结构的分支。一些文件夹被添加到文件资源管理器中,即使我切换分支也没有被删除。我所做的只是删除那些不属于我当前分支的文件夹并且它有效。

于 2021-03-27T00:43:31.350 回答
0

如果您不小心将项目文件复制到另一个项目文件夹中,也会发生此错误。

于 2020-12-18T06:44:52.237 回答
-1

当我尝试在 Visual Studio 2019 中添加.NET 标准类库项目时,我的Blazor 服务器项目中出现了这种错误。

错误:

错误

为了解决这个问题,我尝试了以下方法。

.csproj 文件之前

前

.csproj 文件 之后

解决方案

于 2021-09-30T18:31:40.190 回答
-2

我注释掉了有问题的属性

// obj/Debug/netcoreapp3.1/.NETCoreApp,Version=v3.1.AssemblyAttributes.cs

using System;
using System.Reflection;
//[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v3.1", FrameworkDisplayName = "")]
于 2020-08-06T14:55:54.153 回答
-4

我能够通过获取项目的新克隆来解决这个问题。

于 2021-04-28T05:08:46.220 回答