How to force Nuget Restore using Powershell? - visual-studio

I'd like to force NuGet to restore my NuGet packages. Going to my solutions directory and type NuGet restore, even with the latest downloaded NuGet.exe doesn't work.
As explained here, I can do this in a Powershell prompt, using the Update-Package command (as I prefer not to use my Visual Studio environment).
However, my Powershell seems not to understand Update-Package, although I have a +5 version:
PowerShell Prompt> Get-Host | Select-Object Version
Version
-------
5.1.19041.1023
PowerShell Prompt> Update-Package -reinstall
Update-Package : The term 'Update-Package' is not recognized as the name of a cmdlet, function,
script file, or operable program.
Check the spelling of the name, or if a path was included, verify that
the path is correct and try again.
At line:1 char:1
+ Update-Package -reinstall
+ ~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Update-Package:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
What can I do in order to launch Update-Package successfully in my Powershell?
Thanks in advance

Mybe you can try Update-Package -reinstall command in Package Manager Console

Standard powershell doesn't ship have NuGet restore functionality.
If you refer to https://learn.microsoft.com/en-us/nuget/consume-packages/install-use-packages-visual-studio, and https://learn.microsoft.com/en-us/nuget/consume-packages/package-restore, you will see that there are 5 ways to use NuGet.
Visual Studio (and MSBuild.exe)
Visual Studio for Mac
dotnet CLI
NuGet.exe CLI
Package Manager Console (in Visual Studio)
There is no functionality built into powershell.
Your only options are to build on top of the above mentioned tooling.
Call dotnet.exe restore
Call nuget.exe restore
Call msbuild.exe restore.

I don't use Update-Package, but the following:
& "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe" /t:restore C:\code\projectdirectory
You may have to change the path to MSBuild.exe
Not native PowerShell, but it works.

Related

Run the command "Get-Help entityframework failed in Visual Studio 2019

I am studying to develop web api by using .NET Core 5.0. At this time I am studying Entity Framework. I have already installed Entity Framework Core and Entity Framework tools in Visual Studio 2019.
However when I run the command
Get-Help entityframework
in the Package Manager console, I get an error as shown below. Can anyone help resolve this issue?
Get-Help : Get-Help could not find entityframework in a help file in this session. To download updated help topics type: "Update-Help". To get help online, search for the help topic in the TechNet library at https:/go.microsoft.com/fwlink/?LinkID=107116.
At line:1 char:1
Get-Help entityframework
CategoryInfo : ResourceUnavailable: (:) [Get-Help], HelpNotFoundException
FullyQualifiedErrorId : HelpNotFound,Microsoft.PowerShell.Commands.GetHelpCommand
if you have installed only Microsoft.EntityFrameworkCore.SQLServer Package then you are not able to run any entity framework package manager console commands if want to run add-migration or other related commands then you need install Microsoft.EntityFrameworkCore.Tools package also
First install Microsoft.EntityFrameworkCore.Tools with the help of NuGet Package Manager.

Update nuget package with option -IgnoreDependencies get error

I could not update the WindowsAzure.Storage NuGet Package with the option -IgnoreDependencies. When I update it with following command in the Package Manager Console, I always get the error:
update-package WindowsAzure.Storage -IgnoreDependencies
The error:
Update-Package : packages
At line:1 char:15
+ update-package <<<< WindowsAzure.Storage -IgnoreDependencies
+ CategoryInfo : NotSpecified: (:) [Update-Package], Exception
+ FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.UpdatePackageCommand
Now my workaround is uninstall that package, then install it with the option -IgnoreDependencies. But I have a lot of projects and I need update it frequently. So I want to know the best way to resolve this issue.
Thanks in advance.
Update nuget package with option -IgnoreDependencies get error
I can reproduce this issue on one computer, but I can not reproduce it on another computer. I compared all the differences between them, the final finding is the NuGet Package Manager for Visual Studio version of the difference when you update the nuget package WindowsAzure.Storage with option -IgnoreDependencies.
The version of NuGet Package Manager for Visual Studio on the computer which have the issue is 3.4.4.1321, the version on another one is 3.5.0.1996. So to resolve this issue, please update the nuget package manager to the 3.5.0.1996:
Uninstall the 3.4.4 from Tools->Extensions and Updates->NuGet Package Manager for Visual Studio. Restart the Visual Studio. Then install the 3.5.0.1996 from nuget.org, restart the Visual Studio.
Note: This issue only occurred when you update the nuget package WindowsAzure.Storage from 4.3.0 with -IgnoreDependencies option.

The term 'nuget' is not recognized

Trying to run any nuget command from PM Console and I get this error.
nuget : The term 'nuget' is not recognized as the name of a cmdlet,
function, script file, or operable program. Check the spelling of the
name, or if a path was included, verify that the path is correct and
try again. At line:1 char:1
+ nuget update -self
What should the path be, when I run this command?
I saw this question and answer => 'nuget' is not recognized but other nuget commands working
and based on the answer, I copied the nuget.exe to the folder and set path. After doing that, I am still getting the same error.
NuGet command from PM Console is different with NuGet.exe CLI Reference. The command 'nuget' does not supported by the PM Console. Please check whether your NuGet command is correct first.
Besides, you can try to use other command from PM Console to verify this issue:
Get-Package -ListAvailable
If all command are not recognized, please check and update your Windows version. In the version 1511, you need to have been updated to .64 or later of the builds...otherwise you run into a powershell bug.
Then update the NuGet VSIX,
Open Visual Studio -> Tools -> Extensions and Update -> Updates,
Update Nuget Package Manager for Visual Studio 2013/2015 (note that: Restart your visual studio after update).

Unable to install nuget packages, they are all unable to be found

After running Install-Package Elmah.MVC, I get the following error in Visual Studio:
Install-Package : Unable to find package 'Elmah.MVC'.
At line:1 char:1
+ Install-Package Elmah.MVC
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Install-Package], InvalidOperationException
+ FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand
For my Package Source, I've tried both the following, to no avail. I've even tried Install-Package EntityFramework, and same error.
https://www.nuget.org/api/v2/
https://api.nuget.org/v3/index.json
You can try the following solutions to cope with your issue:
Solution # 1
Delete all the folders inside of the packages folder.
Update all packages in Nuget Package Manager.
Solution # 2
type in the package manager console Uninstall-Package EntityFramework -force, then delete the EntityFramework Folder in Package Folder, and then install it again Install-Package EntityFramework
Solution #3
Use the following link : https://docs.nuget.org/Release-Notes/Known-Issues
From the VS command prompt, run the following command:
regsvr32 "C:\Program Files (x86)\Common Files\microsoft shared\MSEnv\VsLangproj.olb"
Solution #4
Clear the package Cache:
Tools->package Manager->Package Manager Settings-> Clear Package Cache
I hope one of the above methods will help you solve the issue.

'nuget' is not recognized but other nuget commands working

I am trying to create a nuget package using http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package#From_a_convention_based_working_directory
as a reference.
My Package Manger Console in Visual Studio is not allowing me to use the 'nuget' command.
I am able to 'Get-help nuguet' and it displays:
The following NuGet cmdlets are included.
Cmdlet Description
------------------ ----------------------------------------------
Get-Package Gets the set of packages available from the package source.
Install-Package Installs a package and its dependencies into the project.
Uninstall-Package Uninstalls a package. If other packages depend on this package,
the command will fail unless the –Force option is specified.
Update-Package Updates a package and its dependencies to a newer version.
Add-BindingRedirect Examines all assemblies within the output path for a project
and adds binding redirects to the application (or web)
configuration file where necessary.
Get-Project Returns a reference to the DTE (Development Tools Environment)
for the specified project. If none is specifed, returns the
default project selected in the Package Manager Console.
Open-PackagePage Open the browser pointing to ProjectUrl, LicenseUrl or
ReportAbuseUrl of the specified package.
Register-TabExpansion Registers a tab expansion for the parameters of a command.
However, whenever I start off commands with nuget is gives :
The term 'nuget' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try ag
ain.
At line:1 char:6
+ nuget <<<<
+ CategoryInfo : ObjectNotFound: (nuget:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
I have tried the following solutions:
1>closing down all items and restarting
2> uninstalling and reinstalling
3>creating a powershell profile file (this didn't exist before and this actually broke everything)
The problem started to appear after I upgraded my Visual Studio 2012 Ultimate trial version to registered. I had originally had the VS 12 Pro installed. I don't know if that really has anything to do with it but I noticed that others that had similar problems have vs 10 and 12 installed.
My question is "does anyone know what else to try?" My theory is that the path to the nuget command is missing but I cannot find how to configure the paths the package manager console uses and I am not sure where the cmdlet nuget is actually stored.
Updated---tried downloading the command line tool as suggested below. This lead to nothing working again. I tried to uninstall and now I have a item in vs2010 extentions for nuget that doesn't have a install or unistall button enabled. This leads me to believe that it has to do with extensions installed via 2010 and 2012 that has a part in my little drama. If anyone also knows how to nuke an uninstallable extension, please advise also but I will try another question for that.
Nuget.exe is placed at .nuget folder of your project. It can't be executed directly in Package Manager Console, but is executed by Powershell commands because these commands build custom path for themselves.
My steps to solve are:
Download NuGet.exe from https://github.com/NuGet/NuGet.Client/releases (give preference for the latest release);
Place NuGet.exe in C:\Program Files\NuGet\Visual Studio 2012 (or your VS version);
Add C:\Program Files\NuGet\Visual Studio 2012 (or your VS version) in PATH environment variable (see http://www.itechtalk.com/thread3595.html as a How-to) (instructions here).
Close and open Visual Studio.
Update
NuGet can be easily installed in your project using the following command:
Install-Package NuGet.CommandLine
In [Package Manager Console] try the below
Install-Package NuGet.CommandLine
There are much nicer ways to do it.
Install Nuget.Build package in you project that you want to pack. May need to close and re-open solution after install.
Install nuget via chocolatey - much nicer. Install chocolatey: https://chocolatey.org/, then run
cinst Nuget.CommandLine
in your command prompt. This will install nuget and setup environment paths, so nuget is always available.
You can also try setting the system variable path to the location of your nuget exe and restarting VS.
Open your system PATH variable and add the location of your nuget.exe (for me this is: C:\Program Files (x86)\NuGet\Visual Studio 2013)
Restart Visual Studio
I would have posted this as a comment to your answer #done_merson but I didn't have the required reputation to do that.
In Visual Studio:
Tools -> Nuget Package Manager -> Package Manager Console.
In PM:
Install-Package NuGet.CommandLine
Close Visual Studio and open it again.
The nuget commandline tool does not come with the vsix file, it's a separate download
https://github.com/nuget/home
Right-click on your project in solution explorer.
Select Manage NuGet Packages for Solution.
Search NuGet.CommandLine by Microsoft and Install it.
On complete installation, you will find a folder named packages in
your project. Go to solution explorer and look for it.
Inside packages look for a folder named NuGet.CommandLine.3.5.0, here 3.5.0 is just version name your folder name will change accordingly.
Inside NuGet.CommandLine.3.5.0 look for a folder named tools.
Inside tools you will get your nuget.exe
Retrieve nuget.exe from https://www.nuget.org/downloads. Copy it to a local folder and add that folder to the PATH environment variable.
This is will make nuget available globally, from any project.
I got around this by finding the nuget.exe and moving to an easy to type path (c:\nuget\nuget) and then calling the nuget with this path. This seems to solve the problem.
c:\nuget\nuget at the package manager console works as expected.
I tried to find the path that the console was using and changing the environment path but was never able to get it to work in that way.
Follow these steps.
In visual studio go to Tools-> NuGet Package Manager->Package Manager Console
Run below command
Install-Package NuGet.CommandLine
Close visual studio and reOpen again
repeat step 1
run your nuget command
eg. nuget push C:\Users\syaads\Debug\Library.1.0.32.nupkg -Source Artifactory
You can find the nuget.exe in your profile folder:
C:\Users\YourProfileName\.nuget\packages\nuget.commandline\6.0.0\tools
If you want to use it gloablly, please register above path in PATH environment variable.
For detailed guide how to do it, please see Add to the PATH in Windows 10
Download nuget.exe from https://www.nuget.org/downloads.
create a new folder in root of C drive e.g c:\nuget, copy the nuget.ext to nuget folder in c drive and paste.
Go to environmental settings.
Go to System Variable Section => select the variable name as Path and double click on path variable => and click on new button in the last add c:\nuget => then apply => save => save.
Download the nuget.exe from the https://www.nuget.org/downloads.
Copy and paste the downloaded file to the relevant folder where your .nupkg is created.
Try to execute the command.

Resources