一位同事正在尝试将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
答案 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将其视为同一版本。
解决方案是删除这两个包中的一个。