繁体   English   中英

NuGet安装软件包不起作用。 如何获取更多详细信息以帮助调试为什么失败?

[英]NuGet install-package doesn't work. How can I get more verbose information to help debug why this is failing?

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

我可以在Visual Studio程序包管理器控制台中为Install-Package <some nuget package>提供参数,以获取一些详细信息来帮助调试安装失败的原因吗?

错误信息:

从源“ MyGet”中检索“”的程序包元数据时发生错误。

信息:Visual Studio中: V2015的NuGet扩展: 3.4.4.1321 NuGet包来源:MyGet

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

<?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>

对于我自己,我可以很好地安装该软件包。 实际上,我们的MyGet公共仓库中有5个软件包,而我刚安装了其中的2个软件包,就在创建这个SO问题之前(再次)进行测试时。

有人有建议吗?

更新

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

使用PMC中-verbosity detailed-verbosity detailed ,就会发生这种情况。

PM> install-package xunit -verbosity detailed
Install-Package : A parameter cannot be found that matches parameter name 'verbosity'.
At line:1 char:23
+ install-package xunit -verbosity detailed
+                       ~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Install-Package], ParameterBindingException
    + FullyQualifiedErrorId : NamedParameterNotFound,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand

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

 install-package xunit -verbose

您也可以尝试查看$ error对象,以查看是否具有更多信息,例如异常调用堆栈。

$error.Exception.StackTrace

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

您可以在启用PowerShell的Package Manager控制台中使用-Verbose开关来获取更多详细信息。

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

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

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

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

如果是私人供稿,则需要对请求进行身份验证,例如使用预先身份验证的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请求。

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

看起来您正在遇到http://blog.myget.org/post/2016/02/21/Two-of-my-packages-are-治疗-作为一个帮助.aspx 订阅源上有一个0.7.0-dev和0.7-dev版本的软件包,NuGet将该版本视为相同版本。

解决方案是删除这两个软件包之一。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM