Вопрос:

Консольная версия Nuget с ошибками в файле Package.config

.net visual-studio nuget nuget-package-restore

435 просмотра

2 ответа

86 Репутация автора

Я получаю следующий вывод при попытке запустить nuget в моем файле packages.config:

Feeds used:

  C:\Users\username\AppData\Local\NuGet\Cache
  https://api.nuget.org/v3/index.json
  C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\
`
Restoring NuGet package Selenium.RC.2.53.0.
Restoring NuGet package Selenium.Support.2.53.0.
Restoring NuGet package NUnitTestAdapter.2.0.0.
Restoring NuGet package NUnit.2.6.4.
Restoring NuGet package System.Threading.dll.1.0.2856.
Restoring NuGet package Selenium.WebDriver.2.53.0.
Restoring NuGet package Selenium.WebDriverBackedSelenium.2.53.0.
System.AggregateException: One or more errors occurred. --->    System.FormatException: Input string was not in a correct format.

Это запускается на Windows Server 2012 box, с jenkins на нем.

Я попытался зарегистрировать DLL, как указано здесь:

https://docs.nuget.org/Release-Notes/Known-Issues

Эта команда:

regsvr32 "C:\Program Files (x86)\Common Files\microsoft shared\MSEnv\VsLangproj.olb"

Приведенная выше команда не завершилась с ошибкой, но она также не устранила проблему.

Вот мой файл packages.config:

`<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="NUnit" version="2.6.4" targetFramework="net452" />
  <package id="NUnitTestAdapter" version="2.0.0" targetFramework="net452" />
  <package id="Selenium.RC" version="2.53.0" targetFramework="net452" requireReinstallation="true" />
  <package id="Selenium.Support" version="2.53.0" targetFramework="net452" requireReinstallation="true" />
  <package id="Selenium.WebDriver" version="2.53.0" targetFramework="net452" requireReinstallation="true" />
  <package id="Selenium.WebDriverBackedSelenium" version="2.53.0" targetFramework="net452" requireReinstallation="true" />
  <package id="System.Threading.dll" version="1.0.2856.0" targetFramework="net35-client" />
</packages>`

Важно отметить, что это выполняется на Windows Jenkins Slave. Я установил Visual Studio на него, но пока он запускается как лицензионная пробная версия. Я действительно не хочу иметь его с лицензией, если это возможно. Также я запускаю nuget из командной строки (в шаблоне Jenkins). На данный момент он указывает прямо на сайт nuget, чтобы получить его пакеты, но в конечном итоге он будет на корпоративной связи.

Вот ошибка, о которой сообщают в Jenkins:

 Call to NuGet
 Unknown option: '-encodedCommand'
 Finished calling Nuget

Я полагаю, что выражение encodedCommand - вещь PowerShell.

Вот подробный результат работы с powershell в подробном Verbosity:

C:\bin\nuget.exe install F:\Jenkins\workspace\<some company>\
<username>\e2CsharpSeleniumGit\ParallelSelenium\packages.config -Verbosity detailed
Feeds used:
  C:\Users\<username>\AppData\Local\NuGet\Cache
  https://api.nuget.org/v3/index.json
  C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\

Restoring NuGet package Selenium.RC.2.53.0.
Restoring NuGet package Selenium.Support.2.53.0.
Restoring NuGet package NUnitTestAdapter.2.0.0.
Restoring NuGet package NUnit.2.6.4.
Restoring NuGet package System.Threading.dll.1.0.2856.
Restoring NuGet package Selenium.WebDriver.2.53.0.
Restoring NuGet package Selenium.WebDriverBackedSelenium.2.53.0.
System.AggregateException: One or more errors occurred. ---> System.FormatException: Input string was not in a correct f
ormat.
   at System.Text.StringBuilder.AppendFormatHelper(IFormatProvider provider, String format, ParamsArray args)
   at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args)
   at System.String.Format(IFormatProvider provider, String format, Object[] args)
   at NuGet.CommandLine.ConsoleProjectContext.Log(MessageLevel level, String message, Object[] args)
   at NuGet.PackageManagement.PackageRestoreManager.<RestorePackageAsync>d__39.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at NuGet.PackageManagement.PackageRestoreManager.<PackageRestoreRunnerAsync>d__37.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at NuGet.PackageManagement.PackageRestoreManager.<RestoreMissingPackagesAsync>d__35.MoveNext()
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   at NuGet.CommandLine.Command.Execute()
   at NuGet.CommandLine.Program.MainCore(String workingDirectory, String[] args)
---> (Inner Exception #0) System.FormatException: Input string was not in a correct format.
   at System.Text.StringBuilder.AppendFormatHelper(IFormatProvider provider, String format, ParamsArray args)
   at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args)
   at System.String.Format(IFormatProvider provider, String format, Object[] args)
   at NuGet.CommandLine.ConsoleProjectContext.Log(MessageLevel level, String message, Object[] args)
   at NuGet.PackageManagement.PackageRestoreManager.<RestorePackageAsync>d__39.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at NuGet.PackageManagement.PackageRestoreManager.<PackageRestoreRunnerAsync>d__37.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at NuGet.PackageManagement.PackageRestoreManager.<RestoreMissingPackagesAsync>d__35.MoveNext()<---

Любая помощь с благодарностью!

Автор: Peter S Источник Размещён: 22.08.2016 09:30

Ответы (2)


1 плюс

3060 Репутация автора

Вы можете попытаться восстановить ваши пакеты с помощью powershell в Windows Server 2012, выполнив следующие шаги, которые я успешно выполнил на основании вашего файла packages.config со своей стороны.

Сначала создайте файл сценария (.ps1), который использовался для поиска файла packages.config в корне вашего решения, а затем прочитайте их, чтобы запустить команду восстановления nuget для восстановления пакетов.

#This will be the root folder of all your solutions - we will search all children of this folder
$SOLUTIONROOT = "C:\Projects\"
#This is where your NuGet.exe is located
$NUGETLOCATION = "C:\Projects\NuGet\NuGet.exe"

Function RestoreAllPackages ($BaseDirectory)
    {
        Write-Host "Starting Package Restore - This may take a few minutes ..."
        $PACKAGECONFIGS = Get-ChildItem -Recurse -Force $BaseDirectory -ErrorAction SilentlyContinue | 
            Where-Object { ($_.PSIsContainer -eq $false) -and  ( $_.Name -eq "packages.config")}
        ForEach($PACKAGECONFIG in $PACKAGECONFIGS)
            {
                Write-Host $PACKAGECONFIG.FullName
                $NugetRestore = $NUGETLOCATION + " install " + " '" + $PACKAGECONFIG.FullName + "' -OutputDirectory '" + $PACKAGECONFIG.Directory.parent.FullName + "\packages'"
                Write-Host $NugetRestore
                Invoke-Expression $NugetRestore
            }
    }

RestoreAllPackages $SOLUTIONROOT
Write-Host "Press any key to continue ..."
$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

Во-вторых, щелкните правой кнопкой мыши этот файл, чтобы выбрать « Выполнить с Powershell» для выполнения сценария. Затем он начнет устанавливать пакеты на основе найденного файла packages.config.

Автор: Weiwei Cai - MSFT Размещён: 24.08.2016 01:46

0 плюса

86 Репутация автора

Решение

Эта ошибка может быть связана с тем, что Nuget не может получить доступ к хранилищу. Это произошло со мной, потому что у меня не было настроек прокси-сервера с использованием настроек конфигурации nuget через командную строку: https://docs.nuget.org/consume/Command-Line-Reference#config-command

Автор: Peter S Размещён: 25.08.2016 04:53
Вопросы из категории :
32x32