NuGet包还原无法提示使用自定义源的凭据

6
我已经在我的解决方案中启用了NuGet包还原功能。我正在使用nuget.exe版本2.0.30828.5。对于正常公共源中的包,NuGet包还原功能运行良好。也就是说,如果“Packages”目录中没有任何内容,并且我的本地NuGet缓存(C:\ Users \ {username} \ AppData \ Local \ NuGet \ Cache)为空,则NPR完美运行。
然而,当我们尝试在自定义源中使用NPR获取包(自定义源具有基本身份验证)时,我们会得到以下错误:
EXEC : warning : Unable to prompt for credentials. Consult NuGet's help documentation for ways to specify credentials.
c:\<localpath>\.nuget\nuget.targets(80,9): error : Unable to find version '2.0.1.0' of package '<packageName>'.
c:\<localpath>\.nuget\nuget.targets(80,9): error MSB3073: The command ""c:\<localpath>\.nuget\nuget.exe" install "c:\<localpath>\packages.config" -source ""  -RequireConsent -o "c:\<localpath>\packages"" exited with code 1.

当我查看NuGet代码以及反编译nuget.exe以查找字符串"无法提示凭据。请参阅NuGet的帮助文档以了解指定凭据的方法"时,我看到它在那里,但是,老实说,我无法确定谁在使用该错误消息。
当我们添加包(无论是从NuGet UI还是Package Manager Console),它会提示输入凭据并正常工作。这仅在包恢复时存在问题。
我尝试运行此命令:
NuGet.exe source Update -Name {feedname} -UserName {myusername} -Password {mypassword}

但是得到了相同的结果。

有没有人知道我如何使用Basic auth为NuGet Package Restore指定凭据来访问自定义NuGet feed?

更新于9/18/2012

我有一个关于此问题的更新。我观察到,当我运行nuget.exe source Update...命令时,它会将 部分添加到NuGet.config文件中,该文件位于我解决方案本地的.nuget文件夹中。随后,我在运行构建时使用procmon.exe发现,该文件并未被查找!相反,它正在查找“C:\Users{username}\AppData\Roaming\NuGet”目录中的NuGet.config文件。然后,我将本地NuGet.config文件中的 部分复制/粘贴到\AppData\Roaming\NuGet目录中的NuGet.config文件中,并且它起作用了!

所以...问题是,这个过程的正确最佳做法是什么?

1个回答

6

我现在已经搞定了。这是我为了让它工作所做的事情。首先,看起来命令:

NuGet.exe source Update -Name {feedname} -UserName {myusername} -Password {mypassword}

这是正确处理的方法。但需要注意,当你运行 "nuget.exe source Update" 命令时,如果同级目录下存在 NuGet.config 文件,nuget.exe 将在其中存储更改;如果不存在,则会将更改存储在位于 %AppData%\NuGet 目录中的 NuGet.config 文件中。
另一个需要注意的地方是,在构建过程中执行 Package Restore 时,它查看 %AppData%\NuGet 目录中的 NuGet.config 文件,并忽略在执行 nuget.exe 的同级目录中的 NuGet.config 文件(我不确定这是否是个错误或意料之外的情况)。
因此,为了确保更改存储在正确的 NuGet.config 文件中的 %AppData%\NuGet 目录中,你应该使用一个不带 NuGet.config 文件的 nuget.exe 运行该命令。

我的理解是,Nuget.exe 还有一种选项可以提供一个配置文件,这样在调用它时可以尝试更加明确地使用该文件,但也许对于某些命令来说会被忽略。 - dragon788

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接