【问题标题】:Error CS0579 Duplicate 'global::System.Runtime.Versioning.TargetFrameworkAttribute'错误 CS0579 重复 'global::System.Runtime.Versioning.TargetFrameworkAttribute'
【发布时间】:2020-05-25 07:45:43
【问题描述】:

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

 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>

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

【问题讨论】:

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

标签: netcoreapp3.1


【解决方案1】:

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

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

  • netstandard2.1
  • netstandard2.1
  • netcoreapp3.1

我在&lt;PropertyGroup&gt; 部分中的每个*.csproj 文件中添加了以下行:

<GenerateTargetFrameworkAttribute>false</GenerateTargetFrameworkAttribute>

完整示例

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

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

</Project>

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

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

【讨论】:

  • 在 VS Code 中遇到了这个问题,因此决定将 "/property:GenerateTargetFrameworkAttribute=false" 放入 tasks.json 构建参数中。
  • 这并没有解决问题的原因。它只是隐藏它。
  • GenerateAssemblyInfo = false 的缺点是什么?它有什么要求?禁用它可能会破坏什么?
【解决方案2】:

将以下两行添加到&lt;PropertyGroup&gt;。这为我解决了问题。

<PropertyGroup>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
    <GenerateTargetFrameworkAttribute>false</GenerateTargetFrameworkAttribute>    
</PropertyGroup>

【讨论】:

  • 这应该被赞成并推广为解决方案
  • 这对我来说并不是很明显,它进入了哪个文件以及它的去向。它们进入 标签下的 .csproj 文件
  • 谢谢!这对我有用并解决了我的问题。
  • 这对我有用。但是如果我想生成 AssemblyInfo 怎么办?那么我需要这是真的吗?如果我删除它,找到有问题的模块并删除 bin 和 obj 文件夹,这也有效
  • 认为问题可能是设计使然,但简单的解决方法肯定不明显。 .Net Core 包括由 dir 层次结构中的位置推断出的东西......我有lang-text rootdir\x.sln, rootdir\x.csproj rootdir\Proj2\proj2.csprog. 因为推断“proj2”自动出现在“x.csproj”中。如果可能的话,在 VS 本身中打开 sln,在解决方案资源管理器中,“从项目中排除”,“AnotherProj”,完成并修复;)我会发布 csproj 实体,但会超过最大评论长度。从这里开始简单。通过推理包含文件,有利有弊
【解决方案3】:

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

MyProject
   src/MyProject.csproj
   tests/MyTestProject.csproj

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

【讨论】:

  • 已创建问题:我使用 MainWebAPIProject 创建了一个解决方案,我在 MainWebAPIProject 中创建了另一个类库类型的项目,因此问题开始出现
  • 解决方案:我只取 MainWebAPIProject 文件夹的 ClassLibrary 项目,问题已修复,无需更改任何 proj 文件,之后我在 mainproject 中添加了我的类库的引用。就是这样
  • 这对我有帮助。我突然收到 CS0579,原来我的 Test Harness 项目与我正在测试的项目在同一个目录中,因此在项目中被选中。排除测试项目为我解决了这个问题。
  • 这也是发生在我身上的事情。嵌套项目甚至没有在解决方案中使用,但在 VSCode 中打开基本文件夹会找到所有项目并使用 OmniSharp 编译它们。嵌套项目中的 obj 文件夹会导致问题。
  • 其他解决方案只是在隐藏问题。
【解决方案4】:

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

【讨论】:

  • 对我来说也一样,只是删除以前的构建工件解决了这个问题。
【解决方案5】:

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

【讨论】:

  • 您能否说明如何从项目/解决方案中排除 obj
  • 右键单击>从Visual Studio中的项目中排除,或者只是删除文件夹。它在构建时重新创建
  • 是的,我知道。我在 Linux 上,在 VS Code 中。最好更新您的问题,并解释如何在 Visual Studio 中执行此操作,并编写 MSBuild 代码以供参考。谢谢。
  • 我从来没有问过问题......
【解决方案6】:

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

这在正常情况下应该可以工作,您只需将此根目录视为 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

就是这样。只需重新加载您的解决方案并快乐编码!。

【讨论】:

    【解决方案7】:

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

    【讨论】:

      【解决方案8】:

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

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

      【讨论】:

      • 排除他们是什么意思。你是怎么做到的?
      【解决方案9】:

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

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

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

      这似乎是 .NET core 3.1.300 中的回归。我正在使用 .NET core 3.1.200 进行构建,直到升级后才发现此问题。

      【讨论】:

      【解决方案10】:

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

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

      【讨论】:

        【解决方案11】:

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

        【讨论】:

          【解决方案12】:

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

          【讨论】:

            【解决方案13】:

            当我尝试在 Visual Studio 2019 中添加 .NET Standard 类库项目时,我的 Blazor Server 项目中出现此类错误。

            错误:

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

            .csproj 文件之前

            .csproj 文件之后

            【讨论】:

            • 对代码使用代码标签而不是图像
            【解决方案14】:

            我把有问题的属性注释掉了

            // 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 = "")]
            

            【讨论】:

            • 如何注释掉自动生成的值?
            【解决方案15】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2020-10-29
              • 2022-01-22
              • 2012-05-22
              • 2022-09-27
              • 2023-03-06
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多