Nuget的控制台版本在Package.config文件中出错

时间:2016-08-22 21:30:42

标签: .net visual-studio nuget nuget-package-restore

尝试在packages.config文件上运行nuget时,我得到以下输出:

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上运行的,上面有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运行的详细输出:

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()<---

非常感谢任何帮助!!

2 个答案:

答案 0 :(得分:1)

您可以尝试使用PowerShell在Windows Server 2012上使用powershell恢复您的软件包,并执行以下步骤,我已根据您身边的packages.config文件成功运行。

首先,创建一个脚本文件(.ps1),用于在解决方案根目录中找到packages.config文件,然后读取它们以运行nuget restore命令来恢复软件包。

#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文件开始安装软件包。

答案 1 :(得分:0)

此错误可能来自Nuget无法访问存储库。这发生在我身上,因为我没有通过命令行使用nuget配置设置设置我的代理设置: https://docs.nuget.org/consume/Command-Line-Reference#config-command