Error CS0579 Duplicate 'global::System.Runtime.Versioning.TargetFrameworkAttribute'

Viewed 71831

When I build my application I get the following error

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

The following code is autogenerated in the obj/Debug/netcoreapp3.1 folder

// using System; using System.Reflection; [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v3.1", FrameworkDisplayName = "")]

I have a project file starting with

<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>

I can work around the issue by commenting out the contents of the file, but not by deleting the file.

20 Answers

I was also getting this error in VS Code and the following fixed it.

I have a project/solution with three projects within in.

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

I added the following line to each of the *.csproj files within the <PropertyGroup> section:

<GenerateTargetFrameworkAttribute>false</GenerateTargetFrameworkAttribute>

Full example

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

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

</Project>

After doing the above you might need to clean /bin and /obj folders for each project.

This article pointed me in the right direction though nothing online that I found mentioned the attribute above. I just guessed and it worked!

Add the following two lines to the <PropertyGroup>. This fixed it for me.

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

The problem was about my folder structure : the test project was in the main project folder. Passing each side by side in the same repo solved the problem

MyProject
   src/MyProject.csproj
   tests/MyTestProject.csproj

Taken from Github issue : https://github.com/dotnet/core/issues/4837

So i did encounter the same on a .NET 4.7 based solution, spent hours, only to find out a colleague of mine did include the obj and bin folders in the project! excluding them fixed the issue and that error went away.

hope this save someone a couple of hours.

I fixed this by deleting the obj and bin folders in each project directory. I then cleaned the solution and rebuilt. The rebuild succeeded.

You just need to exclude the obj folder from the project/solution.

I was facing the same issue in my asp.net core 3.1 application right after I add the xUnit project to the solution. Ultimately, the main issue was because of that I selected the check box Place solution and project in the same directory as shown in the preceding image.

enter image description here

This should work in normal cases, and you will just consider this root directory as the Git repository (the .sln file and the .csproj will be in the same folder). But you will not be able to add a new project to this directory as you will get the error "Error CS0579 Duplicate 'global::System.Runtime.Versioning.TargetFrameworkAttribute'". So, to fix this error, we just have to follow the preceding steps.

  1. Create a folder with the same name in the .sln file
  2. Move all the project-related files to that directory
  3. Open your .sln file with any code editor
  4. Edit the Project references.
  5. Make sure that your .sln file is in the root directory

This is how your project file references may look like now.

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

That's it. Just reload your solution and happy coding!.

I encountered that issue, what I did is I deleted the .NETCoreApp,Version=v3.1.AssemblyAttributes.cs and then I ran VSCode as an administrator.

I am having the same problem. As far as I can tell, the flag should prevent the auto-generation of assembly info. However, I can see this file in my obj directory:

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

It only contains the target version attribute. Maybe there is some other way of suppressing this attribute?

It seems like this might be a regression in .NET core 3.1.300. I was building with .NET core 3.1.200 and I didn't see this issue until I upgraded.

Try to delete obj folder from Project, delete it from SolutionExplorer instead of WindowExplorer.

I experienced this on a build pipeline in Azure Devops. I was using a local agent to run the pipeline on (my own machine). It appears that there was code in the working directory that was causing this conflict, and by default, the agent doesn't clean the working directory before starting the pipeline process.

The fix was to delete the contents of the working directory on the agent. I did this by selecting the option to clean the working directory:

Clean the working directory in Azure Devops get sources page

I had this when my folder structure got messed up. I'm using Visual Studio 2019 and switched branches that has different folder structure. Some folders got added up in the file explorer and didn't get deleted even if I switched branches. All I did was to delete those folders that weren't part of my current branch and it worked.

This error can also happen if you accidentally copied an project file into another projects folder.

I had this kind of Errors in my Blazor Server project when I tried to add .NET Standard Class Library project in Visual Studio 2019.

Errors:

Errors

To fix this i tried following ways.

.csproj file Before

Before

.csproj file After

Solution

in my case (.NET 6.0); I just exclude the Properties folder from the project/solution.

From the many different kind of answers, it's clear that there could be different reasons for the same issue. In my case the solution definition file was the cause. I decided to delete and create a clean solution file.

  1. Delete the .sln file
  2. Create a blank .sln file, in the root of your project/solution:
dotnet new sln
  1. For every C# project file in your solution, add it with the following command, for example:
dotnet add MyApplication.csproj

and for example:

dotnet add CustomPackages/MyLibrary.csproj

Then to make sure all previous build artefacts are cleaned up

dotnet clean

In my case the culprit was my test project so I had to go to my test folder > obj > Debug/net6.0 > .NETCoreApp,Version=v6.0.AssemblyAttributes.cs

and then commented this line

[assembly:global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName = "")]

DELETE [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName = "")]

enter image description here

I commented out the offending attribute

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

I was able to solve this issue by getting a new clone of the project.

Related