Visual Studio Package Manager Console

-->

There are a number of situations, described below under When to Reinstall a Package, where references to a package might get broken within a Visual Studio project. In these cases, uninstalling and then reinstalling the same version of the package will restore those references to working order. Updating a package simply means installing an updated version, which often restores a package to working order.

In Visual Studio, the Package Manager Console provides many flexible options for updating and reinstalling packages.

Updating and reinstalling packages is accomplished as follows:

The Package Manager Console is a PowerShell console within Visual Studio used to interact with NuGet and automate Visual Studio. You can access the Package Manager Console from within Visual Studio by going to Tools - Library Package Manager- Package Manager Console. To open the console in Visual Studio, go to the main menu and select Tools NuGet Package Manager Package Manager Console command. By default, console commands operate against a specific package source and project as set in the control at the top of the window. If you are using Visual Studio 2017 as your main IDE, than you are probably familiar and used at least once NuGet package manager console. You may know or maybe not, but NuGet Package Manager relies on PowerShell script and Package Manager Console is basically hosted PowerShell command line inside Visual Studio. I then thought to try EF under a test console project in.Net Framework 4.7.2. When VS loads that project during a fresh launch, I get roughly the same issue. &: The term 'C: Users source repos ConsoleApp1 packages EntityFramework.6.4.4 tools init.ps1' is not recognized as the name of a cmdlet, function, script file, or operable.

MethodUpdateReinstall
Package Manager console (described in Using Update-Package)Update-Package commandUpdate-Package -reinstall command
Package Manager UIOn the Updates tab, select one or more packages and select UpdateOn the Installed tab, select a package, record its name, then select Uninstall. Switch to the Browse tab, search for the package name, select it, then select Install).
nuget.exe CLInuget update commandFor all packages, delete the package folder, then run nuget install. For a single package, delete the package folder and use nuget install <id> to reinstall the same one.
Manager

Note

For the dotnet CLI, the equivalent procedure is not required. In a similar scenario, you can restore packages with the dotnet CLI.

In this article:

When to Reinstall a Package

  1. Broken references after package restore: If you've opened a project and restored NuGet packages, but still see broken references, try reinstalling each of those packages.
  2. Project is broken due to deleted files: NuGet does not prevent you from removing items added from packages, so it's easy to inadvertently modify contents installed from a package and break your project. To restore the project, reinstall the affected packages.
  3. Package update broke the project: If an update to a package breaks a project, the failure is generally caused by a dependency package which may have also been updated. To restore the state of the dependency, reinstall that specific package.
  4. Project retargeting or upgrade: This can be useful when a project has been retargeted or upgraded and if the package requires reinstallation due to the change in target framework. NuGet shows a build error in such cases immediately after project retargeting, and subsequent build warnings let you know that the package may need to be reinstalled. For project upgrade, NuGet shows an error in the Project Upgrade Log.
  5. Reinstalling a package during its development: Package authors often need to reinstall the same version of package they're developing to test the behavior. The Install-Package command does not provide an option to force a reinstall, so use Update-Package -reinstall instead.

Constraining upgrade versions

By default, reinstalling or updating a package always installs the latest version available from the package source.

In projects using the packages.config management format, however, you can specifically constrain the version range. For example, if you know that your application works only with version 1.x of a package but not 2.0 and above, perhaps due to a major change in the package API, then you'd want to constrain upgrades to 1.x versions. This prevents accidental updates that would break the application.

To set a constraint, open packages.config in a text editor, locate the dependency in question, and add the allowedVersions attribute with a version range. For example, to constrain updates to version 1.x, set allowedVersions to [1,2):

In all cases, use the notation described in Package versioning.

Using Update-Package

Visual studio package manager console

Being mindful of the Considerations described below, you can easily reinstall any package using the Update-Package command in the Visual Studio Package Manager Console (Tools > NuGet Package Manager > Package Manager Console).

Using this command is much easier than removing a package and then trying to locate the same package in the NuGet gallery with the same version. Note that the -Id switch is optional.

The same command without -reinstall updates a package to a newer version, if applicable. The command gives an error if the package in question is not already installed in a project; that is, Update-Package does not install packages directly.

By default, Update-Package affects all projects in a solution. To limit the action to a specific project, use the -ProjectName switch, using the name of the project as it appears in Solution Explorer:

To update all packages in a project (or reinstall using -reinstall), use -ProjectName without specifying any particular package:

To update all packages in a solution, just use Update-Package by itself with no other arguments or switches. Use this form carefully, because it can take considerable time to perform all the updates:

Visual Studio Package Manager Console

Updating packages in a project or solution using PackageReference always updates to the latest version of the package (excluding pre-release packages). Projects that use packages.config can, if desired, limit update versions as described below in Constraining upgrade versions.

Visual Studio Package Manager Console Command

For full details on the command, see the Update-Package reference.

Considerations

Visual Studio Package Manager Console Initializing Powershell Host

Visual Studio Package Manager ConsoleShortcut

The following may be affected when reinstalling a package:

  1. Reinstalling packages according to project target framework retargeting

    • In a simple case, just reinstalling a package using Update-Package –reinstall <package_name> works. A package that is installed against an old target framework gets uninstalled and the same package gets installed against the current target framework of the project.
    • In some cases, there may be a package that does not support the new target framework.
      • If a package supports portable class libraries (PCLs) and the project is retargeted to a combination of platforms no longer supported by the package, references to the package will be missing after reinstalling.
      • This can surface for packages you're using directly or for packages installed as dependencies. It's possible for the package you're using directly to support the new target framework while its dependency does not.
      • If reinstalling packages after retargeting your application results in build or runtime errors, you may need to revert your target framework or search for alternative packages that properly support your new target framework.
  2. requireReinstallation attribute added in packages.config after project retargeting or upgrade

    • If NuGet detects that packages were affected by retargeting or upgrading a project, it adds a requireReinstallation='true' attribute in packages.config to all affected package references. Because of this, each subsequent build in Visual Studio raises build warnings for those packages so you can remember to reinstall them.
  3. Reinstalling packages with dependencies

    • Update-Package –reinstall reinstalls the same version of the original package, but installs the latest version of dependencies unless specific version constraints are provided. This allows you to update only the dependencies as required to fix an issue. However, if this rolls a dependency back to an earlier version, you can use Update-Package <dependency_name> to reinstall that one dependency without affecting the dependent package.
    • Update-Package –reinstall <packageName> -ignoreDependencies reinstalls the same version of the original package but does not reinstall dependencies. Use this when updating package dependencies might result in a broken state
  4. Reinstalling packages when dependent versions are involved

    • As explained above, reinstalling a package does not change versions of any other installed packages that depend on it. It's possible, then, that reinstalling a dependency could break the dependent package.