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>
提供一个参数来获取一些详细信息以帮助调试安装失败的原因吗?
错误信息:
An error occurred while retrieving package metadata for '' from source '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 public 存储库中有 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
您可以尝试将 -Verbose 参数添加到您的 PowerShell 命令中。
install-package xunit -verbose
您也可以尝试查看 $error 对象,看看它是否有更多信息,例如异常调用堆栈。
$error.Exception.StackTrace
以上可能会或可能不会为您提供更多信息。
您可以在支持 PowerShell 的程序包管理器控制台中使用 -Verbose
开关来获取更多详细信息。
要排除 MyGet 的客户端连接问题,您可以尝试诊断客户端与 Feed 的连接吗?
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>
如果上述 none 可以帮助您解决问题,请随时使用带有 -verbosity detailed
的 nuget 命令行 (nuget.exe),因为它可能会提供更多详细信息,例如实际发出的 HTTP 请求。
此外,请确保您使用最新版本的 NuGet 客户端工具(可用 here)
看起来你 运行 变成了 http://blog.myget.org/post/2016/02/21/Two-of-my-packages-are-treated-as-one-Help!.aspx。提要上有 0.7.0-dev 和 0.7-dev 版本的包,NuGet 将其视为同一版本。
解决方法是删除这两个包之一。
一位同事正在尝试将 nuget 包安装到一个简单的默认 c# Web 应用程序中。它几乎立即失败。
我可以在 Visual Studio 程序包管理器控制台中向 Install-Package <some nuget package>
提供一个参数来获取一些详细信息以帮助调试安装失败的原因吗?
错误信息:
An error occurred while retrieving package metadata for '' from source '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 public 存储库中有 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
您可以尝试将 -Verbose 参数添加到您的 PowerShell 命令中。
install-package xunit -verbose
您也可以尝试查看 $error 对象,看看它是否有更多信息,例如异常调用堆栈。
$error.Exception.StackTrace
以上可能会或可能不会为您提供更多信息。
您可以在支持 PowerShell 的程序包管理器控制台中使用 -Verbose
开关来获取更多详细信息。
要排除 MyGet 的客户端连接问题,您可以尝试诊断客户端与 Feed 的连接吗?
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>
如果上述 none 可以帮助您解决问题,请随时使用带有 -verbosity detailed
的 nuget 命令行 (nuget.exe),因为它可能会提供更多详细信息,例如实际发出的 HTTP 请求。
此外,请确保您使用最新版本的 NuGet 客户端工具(可用 here)
看起来你 运行 变成了 http://blog.myget.org/post/2016/02/21/Two-of-my-packages-are-treated-as-one-Help!.aspx。提要上有 0.7.0-dev 和 0.7-dev 版本的包,NuGet 将其视为同一版本。
解决方法是删除这两个包之一。