Строка ввода не была в правильном исключении формата в NuGet
Я пытаюсь установить Ninject в одном из моих проектов с точной версией и названием проекта. Я использую локально размещенный репозиторий пакетов. При установке пакета я столкнулся со следующей проблемой:
PM> Install-Package Ninject -version 3.2.2.0 -project My.Project.Name
Installing 'Ninject 3.2.2.0'.
You are downloading Ninject from Ninject Project Contributors, the license agreement to which is available at https://github.com/ninject/ninject/raw/master/LICENSE.txt. Check the package for additional dependencies, which may come with their own license agreement(s). Your use of the package and dependencies constitutes your acceptance of their license agreements. If you do not accept the license agreement(s), then delete the relevant components from your device.
Successfully installed 'Ninject 3.2.2.0'.
Adding 'Ninject 3.2.2.0' to My.Project.Name.
Install failed. Rolling back...
Install-Package : Input string was not in a correct format.
At line:1 char:16
+ Install-Package <<<< Ninject -version 3.2.2.0 -project My.Project.Name
+ CategoryInfo : NotSpecified: (:) [Install-Package], FormatException
+ FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand
PM> $error[0].Exception.StackTrace
at System.Text.StringBuilder.AppendFormat(IFormatProvider provider, String format, Object[] args)
at System.String.Format(IFormatProvider provider, String format, Object[] args)
at NuGet.PowerShell.Commands.NuGetBaseCommand.Log(MessageLevel level, String message, Object[] args)
at NuGet.VisualStudio.VsProjectSystem.RemoveReference(String name)
at NuGet.ProjectManager.RemovePackageReferenceFromProject(IPackage package)
at NuGet.ProjectManager.Execute(PackageOperation operation)
at NuGet.ProjectManager.Execute(IPackage package, IPackageOperationResolver resolver)
at NuGet.ProjectManager.RemovePackageReference(IPackage package, Boolean forceRemove, Boolean removeDependencies)
at NuGet.VisualStudio.VsPackageManager.RollbackProjectActions(IProjectManager projectManager, IEnumerable`1 packagesAdded, IEnumerable`1 packagesRemoved)
at NuGet.VisualStudio.VsPackageManager.RunProjectAction(IProjectManager projectManager, Action action)
at NuGet.VisualStudio.VsPackageManager.AddPackageReference(IProjectManager projectManager, IPackage package, Boolean ignoreDependencies, Boolean allowPrereleaseVersio
ns)
at NuGet.VisualStudio.VsPackageManager.<>c__DisplayClass8.<InstallPackage>b__4()
at NuGet.VisualStudio.VsPackageManager.RunSolutionAction(Action action)
at NuGet.VisualStudio.VsPackageManager.InstallPackage(IProjectManager projectManager, String packageId, SemanticVersion version, Boolean ignoreDependencies, Boolean a
llowPrereleaseVersions, Boolean skipAssemblyReferences, ILogger logger)
at NuGet.VisualStudio.VsPackageManager.InstallPackage(IProjectManager projectManager, String packageId, SemanticVersion version, Boolean ignoreDependencies, Boolean a
llowPrereleaseVersions, ILogger logger)
at NuGet.PowerShell.Commands.InstallPackageCommand.InstallPackage(IVsPackageManager packageManager)
at NuGet.PowerShell.Commands.InstallPackageCommand.ProcessRecordCore()
at NuGet.PowerShell.Commands.NuGetBaseCommand.ProcessRecord()
PM>
После этого:
- запись добавляется в файл packages.config в каталоге проекта
- упакованный добавляется в каталог пакетов в каталоге решений
- не ссылается на библиотеку
- зависимые библиотеки не обрабатываются.
Как я могу его исправить? Что может вызвать эту проблему?
Ответы
Ответ 1
Я не знаю точно, что вызывает проблему, но мы смогли ее решить, выполнив следующую команду с использованием учетных данных администратора:
regsvr32 "C:\Program Files (x86)\Common Files\microsoft shared\MSEnv\VsLangproj.olb"
Однако обязательно запустите командную строку как администратор (а не только runas
), иначе вам будет представлено сообщение об успешном завершении, хотя регистрация действительно не удалась.
После этого перезапустите Visual Studio и он должен работать (по крайней мере, для меня это было проверено на нескольких машинах с VS 2010/2012/2013).
Ответ 2
Я пробовал, он работает нормально, как ожидалось.
regsvr32 "C:\Program Files (x86)\Common Files\microsoft shared\MSEnv\VsLangproj.olb"
Ответ 3
Я выяснил, что регистрация (с использованием regsvr as admin) не требуется (Win7 64-bit, MS Visual Studio Community 2013). Я получил то же сообщение об ошибке, что и OP, но на самом деле пакет был скопирован в подпапку "packages" моего решения. Все, что мне нужно было сделать, это щелкнуть правой кнопкой мыши по решению, "добавить ссылки", "просмотреть" и найти соответствующие DLL файлы.