Reputation: 3431
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?
Upvotes: 333
Views: 152254
Reputation: 171
I used V4.7.2, and I was getting the error specifically against one project. I had it resolved by manually going to that specific project folder and deleting only the containing Bin & Obj folders, followed by direct rebuild in VS.
No amount of Clean up, deletions of other bin, package, & obj folders worked!!
Upvotes: 2
Reputation: 185
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)
Upvotes: 2
Reputation: 620
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.
Upvotes: 2
Reputation: 714
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.
Upvotes: 1
Reputation: 1401
For whatever reason, I got this build error in VS2022.
The same build in VS2019 was successful.
Upvotes: 4
Reputation: 2439
The file that was causing issue for me was obj/project.assets.json inside project folder. Deleting it and rebuilding the project worked.
Upvotes: 97
Reputation: 127
I had deleted the obj folder and rerun the build after choosing the target framework required in the property window it worked for me.
Upvotes: 11
Reputation: 314
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.
Upvotes: 1
Reputation: 1378
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
Upvotes: 1
Reputation: 3690
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>
Upvotes: 2
Reputation: 6922
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.
Upvotes: 48
Reputation: 289
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
Upvotes: 6
Reputation: 2346
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.
Upvotes: 67
Reputation: 528
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.
Upvotes: 45
Reputation: 778
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.
Upvotes: 1
Reputation: 477
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.
Upvotes: 6
Reputation: 1283
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.
Upvotes: 4
Reputation: 7642
Please make the next steps
Upvotes: 720