面对 NuGet 问题“'5.0.0+42a8779499c1d1ed2488c2e6b9e2ee6ff6107766' 不是有效的版本字符串。”在安装软件包时
Facing NuGet issue "'5.0.0+42a8779499c1d1ed2488c2e6b9e2ee6ff6107766' is not a valid version string." while installing packages
我已经创建了一个用于在 C# 中测试 Web 应用程序的框架(控制台应用程序)
所有包都由 Nuget 包管理器管理。当我尝试通过 nuget install/uninstall 包时,我遇到异常(粘贴在最后)。
Tools/Configurations
- Visual studio - 社区 2013
- .NET Framework - 4.5.2 Selenium
- 网络驱动程序 - 3.141.0
- MSBuild.NUnit 版本="1.0.2"
- NUnit version="3.12.0"
- NUnit3TestAdapter 版本="3.15.1" NU
- NUnitTestAdapter 版本="2.2.0"
如果有人需要任何其他详细信息,请告诉我。
我查看了与 Nuget 相关的主题,但没有找到任何可以提供一些想法或解决方案的有用主题。
如果您需要任何其他信息,请告诉我 ||请推荐一些ideas/solutions
异常
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
截图
NugetPackageManagerErrorScreenshot
Installed Nuget
您尝试恢复的包(或者在本例中,它的一个依赖项)使用 SemVer 2.0.0 版本,+
后跟版本号中的构建元数据。
不幸的是,Visual Studio 2013 中包含的包管理器不支持 SemVer 2.0.0。它仅由 VS2017 15.3+(以及具有特殊扩展的 VS2015)原生支持。使用语义版本控制 2.0.0 的包将对旧客户端(例如 VS 2013)隐藏生效。*
来自 Nuget Package Versioning 文档,在 Semantic Versioning 2.0.0
部分下(粗体):
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+)
作为解决方法,您可以下载更新版本的 nuget 命令行工具,然后从命令行手动对您的项目执行 nuget restore
。
请注意,越来越多的包正在切换到语义版本控制 2.0.0。根据您使用的软件包,您可能会越来越频繁地开始 运行 这个问题。如果可能的话,我建议升级您的 Visual Studio 版本(VS 社区 免费 )。
* 稍后的工具(例如 dotnet push
和 nuget push
)发出了一条有点烦人的警告消息,提醒作者他们的包正在使用 SemVer 2.0.0 并将老客户无法使用。在这种情况下,包作者要么没有意识到这一事实,要么已经确定版本控制方案的好处超过了包消费者的潜在损失。
我设法通过 程序包管理器控制台 .
使 install/uninstall 程序包正常工作
我之前已经尝试过这些步骤,但不确定为什么当时不起作用。
- 未安装的 nuget:工具 > 扩展和更新 > 已安装 > Nuget
- 重新安装 nuget:工具 > 扩展和更新 > 在线[Visual Studio 图库] > Nuget > 安装
- 更改包管理器设置:工具 > Nuget 包管理器 > 包管理器设置 > Nuget 包管理器 > 包源 > 仅选中 "nuget.org",其余所有内容均未选中 > 单击 "Ok"。
- 重新启动 VS 2013(如果需要,请重新启动系统。)
编辑 1 :
也可以通过 UI 查看。
我已经创建了一个用于在 C# 中测试 Web 应用程序的框架(控制台应用程序) 所有包都由 Nuget 包管理器管理。当我尝试通过 nuget install/uninstall 包时,我遇到异常(粘贴在最后)。
Tools/Configurations
- Visual studio - 社区 2013
- .NET Framework - 4.5.2 Selenium
- 网络驱动程序 - 3.141.0
- MSBuild.NUnit 版本="1.0.2"
- NUnit version="3.12.0"
- NUnit3TestAdapter 版本="3.15.1" NU
- NUnitTestAdapter 版本="2.2.0"
如果有人需要任何其他详细信息,请告诉我。 我查看了与 Nuget 相关的主题,但没有找到任何可以提供一些想法或解决方案的有用主题。
如果您需要任何其他信息,请告诉我 ||请推荐一些ideas/solutions 异常
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
截图
NugetPackageManagerErrorScreenshot
Installed Nuget
您尝试恢复的包(或者在本例中,它的一个依赖项)使用 SemVer 2.0.0 版本,+
后跟版本号中的构建元数据。
不幸的是,Visual Studio 2013 中包含的包管理器不支持 SemVer 2.0.0。它仅由 VS2017 15.3+(以及具有特殊扩展的 VS2015)原生支持。使用语义版本控制 2.0.0 的包将对旧客户端(例如 VS 2013)隐藏生效。*
来自 Nuget Package Versioning 文档,在 Semantic Versioning 2.0.0
部分下(粗体):
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+)
作为解决方法,您可以下载更新版本的 nuget 命令行工具,然后从命令行手动对您的项目执行 nuget restore
。
请注意,越来越多的包正在切换到语义版本控制 2.0.0。根据您使用的软件包,您可能会越来越频繁地开始 运行 这个问题。如果可能的话,我建议升级您的 Visual Studio 版本(VS 社区 免费 )。
* 稍后的工具(例如 dotnet push
和 nuget push
)发出了一条有点烦人的警告消息,提醒作者他们的包正在使用 SemVer 2.0.0 并将老客户无法使用。在这种情况下,包作者要么没有意识到这一事实,要么已经确定版本控制方案的好处超过了包消费者的潜在损失。
我设法通过 程序包管理器控制台 .
使 install/uninstall 程序包正常工作我之前已经尝试过这些步骤,但不确定为什么当时不起作用。
- 未安装的 nuget:工具 > 扩展和更新 > 已安装 > Nuget
- 重新安装 nuget:工具 > 扩展和更新 > 在线[Visual Studio 图库] > Nuget > 安装
- 更改包管理器设置:工具 > Nuget 包管理器 > 包管理器设置 > Nuget 包管理器 > 包源 > 仅选中 "nuget.org",其余所有内容均未选中 > 单击 "Ok"。
- 重新启动 VS 2013(如果需要,请重新启动系统。)
编辑 1 :
也可以通过 UI 查看。