Reputation: 11
I have created a console application for testing web applications in C#. All the packages are managed by NuGet package manager. When I try to install/uninstall packages via NuGet, I'm facing an exception.
Tools/Configurations
Exception
PM> '5.0.0+42a8779499c1d1ed2488c2e6b9e2ee6ff6107766' is not a valid version string.
Parameter name: version
At line:1 char:50
+ '5.0.0+42a8779499c1d1ed2488c2e6b9e2ee6ff6107766' is not a valid versi ...
+ ~~
Unexpected token 'is' in expression or statement.
PM>
PM> Install-Package NuGet.Frameworks -Version 4.7.0
Install-Package : '5.0.0+42a8779499c1d1ed2488c2e6b9e2ee6ff6107766' is not a valid version string.
Parameter name: version
At line:1 char:1
+ Install-Package NuGet.Frameworks -Version 4.7.0
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Install-Package], ArgumentException
+ FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackag
eCommand
PM> uninstall-package Microsoft.TestPlatform.TranslationLayer -version 16.6.1
uninstall-package : '5.0.0+42a8779499c1d1ed2488c2e6b9e2ee6ff6107766' is not a valid version string.
Parameter name: version
At line:1 char:1
+ uninstall-package Microsoft.TestPlatform.TranslationLayer -version 16 ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Uninstall-Package], ArgumentException
+ FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.UninstallPack
ageCommand
PM> nuget update -self
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
+ ~~~~~
+ CategoryInfo : ObjectNotFound: (nuget:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Upvotes: 1
Views: 792
Reputation: 11
Somehow I managed to get the install/uninstall package working via Package manager console.
I had tried these steps earlier, but not sure why it didn't worked then.
Edit 1 :
Able to see via UI as well.
Upvotes: 0
Reputation: 12799
The package you are trying to restore (or in this case, one of its dependencies) uses SemVer 2.0.0 Versioning which is indicated to us here by the +
followed by build meta data in the version number.
Unfortunately, the package manager included with Visual Studio 2013 does not support SemVer 2.0.0. It is only natively supported by VS2017 15.3+ (and VS2015 with a special extension). Packages using Semantic Versioning 2.0.0 will be in effect hidden from older clients, such as VS 2013.*
From the Nuget Package Versioning documentation, under the section Semantic Versioning 2.0.0
(bolding mine):
If you upload a SemVer v2.0.0-specific package to nuget.org, the package is invisible to older clients and available to only the following NuGet clients:
- NuGet 4.3.0+
- Visual Studio 2017 version 15.3+
- Visual Studio 2015 with NuGet VSIX v3.6.0
- dotnet
- dotnetcore.exe (.NET SDK 2.0.0+)
As a workaround, you may download a newer version of the nuget command line tool and then execute nuget restore
against your project from the command line manually.
Note that more and more packages are switching to Semantic Versioning 2.0.0. You may start running into this issue increasingly often depending on the packages you are using. I'd suggest upgrading your version of Visual Studio if at all possible (VS Community is free).
* There is a somewhat annoying warning message emitted by later tooling (such as dotnet push
and nuget push
) that alerts the author to the fact their package is using SemVer 2.0.0 and will be unusable by older clients. The package authors in this case are either oblivious to this fact or have determined that the benefits of the versioning scheme outweigh the potential loss of package consumers.
Upvotes: 0