Столкнувшись с проблемой NuGet "'5.0.0+42a8779499c1d1ed2488c2e6b9e2ee6ff6107766' не является допустимой строкой версии". при установке пакетов

Я создал платформу для тестирования веб-приложений на C#(консольное приложение). Все пакеты управляются менеджером пакетов Nuget. Когда я пытаюсь установить / удалить пакеты через nuget, я сталкиваюсь с исключением (вставлено в конце).

Инструменты / конфигурации

  1. Visual studio - Сообщество 2013
  2. .NET Framework - 4.5.2 Selenium
  3. webdriver - 3.141.0
  4. MSBuild.NUnit version="1.0.2"
  5. Версия NUnit ="3.12.0"
  6. NUnit3TestAdapter version="3.15.1" NU
  7. NUnitTestAdapter version="2.2.0"

Дайте мне знать, если кому-нибудь понадобятся другие подробности. Я просмотрел темы, связанные с Nuget, но не нашел ни одной полезной темы, которая могла бы дать какую-либо идею или решение.

Дайте мне знать, если вам понадобится дополнительная информация || Пожалуйста, предложите несколько идей / решенийИсключение

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

Установлен Nuget

2 ответа

Пакет, который вы пытаетесь восстановить (или, в данном случае, одна из его зависимостей), использует управление версиями 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 (жирная мина):

Если вы загрузите пакет, специфичный для SemVer v2.0.0, на nuget.org, этот пакет будет невидим для старых клиентов и доступен только для следующих клиентов NuGet:

  • NuGet 4.3.0+
  • Visual Studio 2017 версии 15.3+
  • Visual Studio 2015 с NuGet VSIX v3.6.0
  • dotnet
    • dotnetcore.exe (.NET SDK 2.0.0+)

В качестве обходного пути вы можете загрузить более новую версию инструмента командной строки nuget и затем выполнить nuget restore против вашего проекта из командной строки вручную.

Обратите внимание, что все больше и больше пакетов переходят на семантическое управление версиями 2.0.0. Вы можете начать сталкиваться с этой проблемой все чаще, в зависимости от используемых вами пакетов. Я бы посоветовал обновить вашу версию Visual Studio, если это вообще возможно (VS Community бесплатное).

* Более поздние инструменты (например, dotnet push а также nuget push), который предупреждает автора о том, что их пакет использует SemVer 2.0.0 и будет непригоден для использования более старыми клиентами. В данном случае авторы пакета либо не обращают внимания на этот факт, либо определили, что преимущества схемы управления версиями перевешивают потенциальную потерю потребителей пакета.

Каким-то образом мне удалось заставить пакет установки / удаления работать через консоль диспетчера пакетов.

Я пробовал эти шаги раньше, но не уверен, почему тогда это не сработало.

  1. Неустановленный nuget: Инструменты> Расширения и обновления> Установлено> Nuget
  2. Переустановил nuget: Инструменты> Расширения и обновления> Онлайн [Галерея Visual Studio] > Nuget > Установить
  3. Изменены настройки диспетчера пакетов: Инструменты> Диспетчер пакетов Nuget> Параметры диспетчера пакетов> Диспетчер пакетов Nuget> Источники пакетов> Проверено только "nuget.org", все остальное не отмечено> Нажмите "ОК".
  4. Перезагрузите VS 2013(перезагрузите систему, если хотите.)

Изменить 1: также можно видеть через пользовательский интерфейс.