5

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

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

错误信息:

从源“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 公共 repo 中有 5 个包,我刚刚安装了 2 个包,就在那时……当我在创建这个 SO 问题之前(再次)测试它时。

有人有建议吗?

更新

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

在 PMC 中使用-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
4

3 回答 3

4

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

 install-package xunit -verbose

您还可以尝试查看 $error 对象以查看它是否包含更多信息,例如异常调用堆栈。

$error.Exception.StackTrace

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

于 2016-06-19T09:10:54.360 回答
1

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

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

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

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

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>

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

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

于 2016-06-20T08:36:02.593 回答
1

看起来您遇到了http://blog.myget.org/post/2016/02/21/Two-of-my-packages-are-treatment-as-one-Help!.aspx。提要上有包的 0.7.0-dev 和 0.7-dev 版本,NuGet 将其视为相同版本。

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

于 2016-06-21T05:57:36.673 回答