Nuget re-targeting after upgrading from .Net Framework 4.5 to 4.6.1

C#asp.net.NetVisual Studio-2013Nuget

C# Problem Overview


I have a .net solution with approx 30 projects, all of them targeting .Net Framework 4.5. and each referencing at least 3-4 NuGet packages.

We now need to update them to .Net Framework 4.6.1. So here's what I need to know:

  1. Do I need to re-target the NuGet packages as well or can I skip that since this will be an 'in-place' upgrade?
  2. If yes, can I just update the packages.config file for each project by replacing targetFramework="net45" with targetFramework="net461" for each NuGet package? I've seen a few threads recommending uninstall and then reinstall the package via 'update-package' command. I tried that today but it I ended up with a few errors.

C# Solutions


Solution 1 - C#

The packages will not be retargeted automatically, but there is an automated fix for this.

In Package Manager Console simply run:

Update-Package -Reinstall

This will force the package manager to reinstall every package in every project (without changing the version of the referenced package).

By reinstalling the packages after the new framework is targeted this changes all the references to the correct version.

You may also run this against a single project with :

Update-Package -Reinstall -ProjectName Project.Name.Here

I have used this technique many times to fix nuget reference issues.

Solution 2 - C#

1 Find all .csproj files and replace

<TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>

with

<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>

2 Open Package Manager Console and run

Update-Package -Reinstall -IgnoreDependencies

3 Find all solutions then msbuild each one.

Solution 3 - C#

Fixed by using -

Update-Package -reinstall

enter image description here

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionVishalView Question on Stackoverflow
Solution 1 - C#Ken HundleyView Answer on Stackoverflow
Solution 2 - C#OzBobView Answer on Stackoverflow
Solution 3 - C#DeepView Answer on Stackoverflow