从命令行从私有源安装NuGet包

时间:2014-09-03 15:23:29

标签: nuget

是否可以在脚本中从私人订阅源(即需要登录/密码)获取NuGet包?

我有一个包含单个JSON文件的NuGet包。它托管在私人TeamCity Feed上。我想在脚本中使用那个JSON,所以这就是我要做的事情:

nuget sources add -Name tc -Source https://xxxxxxxxx/ -Username username -Password password
nuget install xxxxxxxx -source tc
nuget sources remove -Name tc

哪个结果导致Unable to find version '1.0.7' of package 'xxxxxxx'.这很奇怪,因为它显然能够访问Feed,因为它看到了包的版本,但无法下载包。

我还尝试将软件包安装到虚拟.sln中并运行nuget restore xxxxx.sln。然后NuGet要求我提供两次凭证:

Please provide credentials for: https://xxxxxxxx/httpAuth/app/nuget/v1/xxxxx.svc/
Please provide credentials for: https://xxxxxxxx/httpAuth/repository/download/xxxxx/1148145:id/xxxxxxxx.1.0.7.nupkg

使用Feed&创建NuGet.config凭证声明也会导致相同的Unable to find错误。

当我从VS安装/恢复软件包时,它可以正常工作。

这两个问题似乎有关:

1 个答案:

答案 0 :(得分:0)

看起来这是TC Feed的一个问题。我不认为是这种情况,因为我可以使用来自VS Package Manager的提要,问题仅在于命令行NuGet。

我开启了-Verbosity detailedthanks danliu),这就是我所看到的:

GET https://xxxxxx/httpAuth/app/nuget/v1/FeedService.svc/Packages(Id='xxxxxx',Version='1.0.7')
GET https://xxxxxx/httpAuth/app/nuget/v1/FeedService.svc/Packages(Id='xxxxxx',Version='1.0.7.0')
System.InvalidOperationException: Unable to find version '1.0.7' of package 'xxxxxx'.

请求GET https://xxxxxx/httpAuth/app/nuget/v1/FeedService.svc/Packages(Id='xxxxxx',Version='1.0.7')返回404,我认为它与TeamCity NuGet供稿设置中提到的服务器配置问题有关:

NuGet Feed must contain server URL inside. Current TeamCity server configuration does not let TeamCity server to get original request URL from HTTP request. It looks like TeamCity server is wrongly configured with reverse proxy. Make sure reverse proxy and TeamCity server is configured to let TeamCity server know request real request URL.

我尝试在MyGet上托管软件包并从那里安装它。它成功了。