NuGet install-package不起作用。如何获取更详细的信息来帮助调试失败的原因?

时间:2016-06-19 01:26:01

标签: c# visual-studio nuget myget

一位同事正在尝试将nuget包安装到一个简单的默认c#web应用程序中。它几乎立即失败。

我可以在Visual Studio包管理器控制台中为push_back提供一个参数来获取一些详细信息,以帮助调试安装失败的原因吗?

错误讯息:

  

从源'MyGet'检索''的包元数据时发生错误。

的信息: Visual Studio:Install-Package <some nuget package> NuGet扩展:V2015 Nuget包源: MyGet

在解决方案的根目录中找到的示例3.4.4.1321文件:

NuGet.config

对于我自己,我可以安装好包装。事实上,我们在这个MyGet公共仓库中有5个软件包,我刚刚安装了2个软件包,就在那时......当我在创建这个SO问题之前(再次)测试它时。

有人有什么建议吗?

更新

如上所述,这是使用PACKAGE MANAGER CONSOLE,而不是CLI。

在PMC中使用<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> <add key="MyGet" value="https://www.myget.org/F/<our package>/api/v2" /> </packageSources> </configuration> 就是这样......

-verbosity detailed

3 个答案:

答案 0 :(得分:1)

您可以尝试将-Verbose参数添加到PowerShell命令中。

 install-package xunit -verbose

您还可以尝试查看$ error对象,看看是否有更多信息,例如异常callstack。

$error.Exception.StackTrace

上述内容可能会或可能不会为您提供更多信息。

答案 1 :(得分:1)

您可以使用支持PowerShell的软件包管理器控制台中的-Verbose开关获取更多详细信息。

要排除客户端连接问题到MyGet,您可以尝试诊断客户端与Feed的连接吗?

https://www.myget.org/F/<feedIdentifier>/api/v2

尝试使用Fiddler使用网址格式从该用户计算机上的Feed中检索特定包:

https://www.myget.org/F/<feedIdentifier>/api/v2/package/<packageId>/<packageVersion>

如果是私人Feed,则需要对您的请求进行身份验证,例如:使用预先认证的v2端点:

https://www.myget.org/F/<feedId>/auth/<apiKey>/api/v2/package/<packageId>/<packageVersion>

如果缓存中的某些内容损坏,清除NuGet客户端的HTTP缓存也可能很有用。您可以使用NuGet命令行命令清除它:

nuget.exe locals http-cache -clear

如果包已经在本地缓存中,那么NuGet客户端将从本地缓存中解析它。可能是本地缓存中的包已损坏,在这种情况下,您可以使用以下NuGet命令行命令:

nuget.exe locals all -clear

最后,还可能值得查看nuget.config层次结构。最本地的nuget.config将从链的较高位置继承配置设置(例如,机器范围的设置),其中一个是<disabledPackageSources>元素。要确保此处不在此处,请将以下内容添加到最本地的nuget.config并重试:

<disabledPackageSources>
  <clear />
</disabledPackageSources>

如果以上都不能帮助您解决问题,请随意使用带有-verbosity detailed的nuget命令行(nuget.exe),因为它可能会提供更多详细信息,例如正在发出的实际HTTP请求。 / p>

另外,请确保使用最新版本的NuGet客户端工具(可用here

答案 2 :(得分:1)

您似乎遇到了http://blog.myget.org/post/2016/02/21/Two-of-my-packages-are-treated-as-one-Help!.aspx。在Feed上有一个0.7.0-dev和0.7-dev版本的包,NuGet将其视为同一版本。

解决方案是删除这两个包中的一个。