Your project does not reference ".NETFramework,Version=v4.6.2" framework. Add a reference to ".NETFramework,Version=v4.6.2" in the "TargetFrameworks"
Asked Answered
H

17

319

I can't run my unit tests.

I have the next error:

Your project does not reference ".NETFramework,Version=v4.6.2" framework. Add a reference to ".NETFramework,Version=v4.6.2" in the "TargetFrameworks" property of your project file and then re-run NuGet restore.

In app.config:

<startup>
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/>
</startup>

In Project > Properties > Application > TargetFramework (.NET Framework 4.6.2)

How can I fix it?

Harriman answered 16/10, 2018 at 10:49 Comment(1)
#43239247Piazza
A
666

Please make the next steps

  1. Clean solution
  2. Clean folder "packages"
  3. Delete folder "bin"
  4. Delete folder "obj"
Ardrey answered 15/11, 2018 at 15:21 Comment(18)
#3 and #4 solved the issue. I had a branch that was an upgrade task to 4.7.2 however I had to switch to another branch that was targeting 4.7.1. Do these steps to solve that issue.Electrolier
Had to do one more step, from the solution directory: del /S project.assets.jsonConcomitance
After doing this clean I found out that I had another error in the project which was displayed the .Net Framework error. Fixing it solved the issue.Concede
https://mcmap.net/q/75178/-i-want-to-delete-all-bin-and-obj-folders-to-force-all-projects-to-rebuild-everything has batch scripts for deleting these.Johnette
no 3 and 4 reslove my issue but I have to exit from the visual studio.Amerce
after deleting /packages I had to also run nuget restoreOrnamental
I wonder why the Clean button doesn't clean the obj folder. That would solve this problem.Arias
You can use this powershell script to delete all bin&object gist.github.com/alikrc/f6c08b77d5c58c5b196368169ad24777Epiphora
I upgraded from 4.7.2 to 4.8, and it was sufficient for me to delete the obj/ folders.Subarctic
any idea of why this annoying bugs happen on a product like vs?Takeo
For Mercurial users (after closing your IDE): hg purge --all (beware: this deletes all files that are not under version control what just is what you expect in most cases of clean solution)Weatherboard
It's almost 2022, and it's still happening! $MSFT, please fix it.Constitutionality
Maybe also delete the hidden .vs/ folderMauretania
@Arias After I deleted the obj folder it suddenly during build could not find the projects.assets.json (this is probably why clean does not clean that folder) #48440723 I needed to switch to another minor version of the framework of that project that was complaining (it then generated the file (NPM restore did not do that) then I switched back and the build worked fine againNameplate
@Nameplate I've had it break NuGet packages too. So clean needs to delete obj, then do a NuGet restore. I think the point is that Microsoft could figure this out and fix it.Arias
In my case I had to remove obj and bin folders from all the projects that composed my solution. Including test projects.Irritable
it's now 2024 and this happened to me again. # 3 and #4. Clean does nothing to fix.Aksum
I got it after trying to upgrade an old project, then rolling back. Of course the related files aren't in git...Irrevocable
A
86

The file that was causing issue for me was obj/project.assets.json inside project folder. Deleting it and rebuilding the project worked.

Avarice answered 21/12, 2021 at 8:9 Comment(5)
This is probably the question's answer. Wonderful fact: clean/rebuild does not works.Tautologism
Great: worked fine for me.Doykos
Deleting the Obj folder fixed the issue. ThanksUlrick
For me, this was caused by switching from .NET Core to .NETFrameworks, and this solution worked for me.Amandaamandi
I added "del $(ProjectDir)\obj\*.json" to the pre-build event to prevent this from happening again.Amandaamandi
G
65

I experienced similar issue, but with v4.7.2. Namely, I kept getting build log message like this:

error : Your project does not reference ".NETFramework,Version=v4.7.2" framework. Add a reference to ".NETFramework,Version=v4.7.2" in the "TargetFrameworks" property of your project file and then re-run NuGet restore.

Despite the fact that it looked similar, none of the above proposed steps worked for me. I kept seeing this message after each build. Nothing seemed to be able to help.

In fact, the problem was related to that, due to migration, I had to put two projects in one folder of code. One of them was targeted at .Net Core, another at .Net Framework, both referenced same .Net Standard libraries. Apparently, they share the same obj folder where Core projects put project.assets.json file. Actually, exactly this file interferres with the Framework project preventing its normal build. Seems even if you performed Migrate from packages.config to PackageReference... which was recommended as one of possible solution.

You can try to fix the issue by putting the following snippet into your Framework project file:

<Project>
  ...
  <PropertyGroup>
    <BaseOutputPath>$(MSBuildProjectDirectory)/out/$(MSBuildProjectName)/bin</BaseOutputPath>
    <BaseIntermediateOutputPath>$(MSBuildProjectDirectory)/out/$(MSBuildProjectName)/obj</BaseIntermediateOutputPath>
  </PropertyGroup>
  ...
</Project>

It immediately worked for me, it was only later when I attentively read why we need it and why it works. I unexpectedly found it in part 2 of Migrating a Sample WPF App to .NET Core 3 under Making sure the .NET Framework project still builds section. BaseOutputPath and BaseIntermediateOutputPath msbuild variables can be found there, not sure if they are documented well anywhere.

Giaimo answered 3/2, 2020 at 10:50 Comment(4)
In VS2019 I found that the properties you mention need to be before the OutputPath. I initially just dropped them at the bottom of the csproj with no success. This post has some additional details and implies that this might get fixed at some point: github.com/dotnet/msbuild/issues/2070Okeechobee
I was trying to migrate a solution from .Net Framework 4.7.2 to Net Core 5 and ran into some issues with a dependency. When I reverted, I was getting this error. Build Clean didn't do anything, but deleting all obj (and bin for good measure) directories got me back on track.Artificiality
I solved a similar issue by moving the projects to their separate folders. Having multiple csproj files in the same folder seems to cause problems.Erne
Likewise this solved my problem. Had a flat folder structure where sln and project were in the same root folder. Moved the project to src\ and this fixed the build errors on Azure pipelines.Saudra
M
48
git clean -xdf

That should do the trick. It worked for us also in Jenkins. (we simply replayed the failed build with a modified script that ran git clean first).

For some reason MSBuild / Visual Studio get confused when switching between branches that target different versions of .NET Framework, so I had to do git cleans regularly while switching between branches.

Manriquez answered 22/1, 2021 at 10:25 Comment(3)
that was the solution in my case! thank you !Lianeliang
Beware that this command will remove all untracked files from the working tree, including those defined in .gitignore file.Buttonhole
Worked for me when I was setting up UE4 and switched to another version branch.Mclellan
C
45

That happened to me when opening a VS2015 project in VS2017. Deleting the project.assets.json from the obj folder did the trick.

Anyway, the Framework from the message was missing in the file, I did not add it there though, went with deleting it.

Colonel answered 18/2, 2020 at 13:26 Comment(2)
Simplest solution of all. Just search for the file in solution and delete them at once :)Throat
The Pre-build command "IF EXIST $(ProjectDir)obj\project.assets.json del /F $(ProjectDir)obj\project.assets.json" in the common library worked for me. Thanks.Buddha
I
11

I had deleted the obj folder and rerun the build after choosing the target framework required in the property window it worked for me.

Intension answered 3/12, 2021 at 19:12 Comment(1)
Deleting bin and obj folders for both the EXE and DLL projects worked for me.Manvell
C
6

I up-voted Larissa but I thought it might be helpful to know how I got into this. I added a .net standard project file to my build (we target lots of platforms) and it produced the debris found in the obj folder. When the android sanity build came around, it threw up on the obj folder. My solution was to clean that folder out as a pre-build step. This is a difficult problem because it was working just fine for years...needle meet haystack.

Candlenut answered 7/5, 2019 at 19:41 Comment(0)
S
6

For my case, delete the .pkgrefgen/ folder under the project folder works, it contains a file project.assets.json that refer to old .net framework

Selfoperating answered 26/2, 2020 at 13:25 Comment(1)
Mine was a project.assets.json file in the obj folder. Deleted bin and obj folders and the issue went away.Courtnay
G
4

I ran into the same thing with .net 4.71. In my case, I simply migrated from packages.config to "package references" per

Migrate from packages.config to PackageReference

... and it fixed my issue. For me, I was going to do this anyway, so if you're going this way already, I'd just skip the above and migrate to package references.

Grinder answered 6/2, 2019 at 17:30 Comment(0)
S
3

For whatever reason, I got this build error in VS2022.

The same build in VS2019 was successful.

Steve answered 7/7, 2022 at 18:5 Comment(2)
This should be a comment, doesn't really answer the OP's question.Ramon
I can see it both ways - it doesn't explain the cause, but does offer a solution. I did consider a comment but as none of the answers cured the issue for me I opted to post an answer for others in the same boat as me.Steve
F
2

Renaming the project solved the error for me. The issue happened after I created .NET Core project, then I deleted it and created a .NET Standard one with the same name. Obj folder was not present at all. Deleting bin folder, packages, clean and rebuild solution and getting latest with override did not help.

I have not tried this, but this thread proposed workaround is to include into csproj tag:

<ResolveNuGetPackages>false</ResolveNuGetPackages>
Flybynight answered 11/3, 2021 at 14:53 Comment(0)
C
1

I am using a very old .NET project, and it was working fine until it stopped all of a sudden. Upgrading Visual Studio fixed for me thou.

Crowson answered 11/2, 2020 at 19:48 Comment(0)
H
1

On VS2019 I had to follow the error message and edit the project.json file that was in the project directory.

was ".NETFramework,Version=v4.0": {} // whatever the copied project was set to
now ".NETFramework,Version=v4.7.2": {} // set to whatever the current build is set to

Hula answered 1/9, 2021 at 19:29 Comment(0)
S
1

Problem: In VS2017. Missing reference to .netframework 4.5.2, even though it was referenced as the target framework.

My solution: Verified framework was installed and restarted machine. After a git clean and simply right clicking on the solution in the explore and 'Restore nuget packages' did the trick.

Schweinfurt answered 8/9, 2021 at 21:28 Comment(0)
R
1

I had the same issue in CI/CD process, when i had upgraded .net framework version from 4.6.1 to 4.7.2 which worked fine locally without any other modification.

However, the jenkins 'slave' node where the build was actually getting generated had some issue with nuget restore and it was not able to pick the latest build for some reason.

Logged into jenkins slave machine/node (basically the machine which jenkins uses to create the build/artifact), go to deployment path and then try deleting projects old builds along with .nugets folder and trigger CI/CD process again worked for me.

Redintegration answered 17/8, 2022 at 12:7 Comment(0)
F
1

This error also occurs if you have removed an old SDK that provided nuget packages, but it is still referenced in your package sources list under Nuget manager/settings. Remove the nuget package source no longer in use to fix this. Otherwise, Visual studio on building will create the project.assets.json file with a reference to the old sdk and if the path is not there, you get the OP's error. In my case, I had DevExpress 20.2 in my list which I removed to resolve this issue.

enter image description here

Fizz answered 18/11, 2022 at 14:55 Comment(0)
S
1

Shut down and restart of visual studio 2022 solved it for me. (when I cleaned the folders per the #1 post here... the error didn't go away until a restart)

Series answered 20/12, 2023 at 11:33 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.