【问题标题】:Nuget restore works in Visual Studio, but not from command lineNuget 还原在 Visual Studio 中有效,但不能从命令行
【发布时间】:2019-05-01 14:48:30
【问题描述】:

在 Visual Studio 中,我配置了一个需要身份验证的 Azure DevOps nuget 提要。不知何故,这在 VS 中自动工作,我可以像往常一样从提要中访问和检索包。

但只要我从命令行运行nuget restore,就会要求我提供凭据。为什么是这样?

Visual Studio 如何自动检测用于提要的凭据,我如何在命令行上复制它?

这个建议似乎根本不起作用,它仍然要求提供凭据:

nuget sources Update -name feed.com -username aaa -password bbb

(我正在使用 VS2017,用于 .NET Framework 项目)

【问题讨论】:

    标签: .net visual-studio nuget nuget-package


    【解决方案1】:

    我不能 100% 确定 NuGet 对命令行上提供的用户名和密码做了什么,但我猜应该是 HTTP 基本身份验证。但是,HTTP Basic 并不是一个好的实践,因此使用它的 Web 应用程序越少越好。 Azure DevOps 正确地不接受它作为对其私人订阅源的一种身份验证形式。

    使用 Azure DevOps,您有两种选择。一种选择是创建一个Personal Access Token 并使用它。我不打算解释为什么使用令牌比 HTTP 基本用户名和密码更安全,互联网上有大量信息,您可以通过快速搜索轻松找到。

    另一个选项是使用Microsoft NuGet Credential Provider。 Visual Studio 有一个内置的。我不确定 dotnet cli。但是,如果您使用的是 nuget.exe,则需要按照链接文档页面中的说明下载他们的凭证提供程序。如果您正在调查在 Azure DevOps 上运行的 CI 管道,正如文档页面顶部所说,他们在 NuGet 任务中内置了凭据提供程序。

    无论如何,很抱歉听起来像个混蛋,但是有很多文档和博客文章以及有关使用 Azure DevOps NuGet 源和获取凭据工作的其他信息。如果您已按照这些说明操作,但仍有问题,我们或许可以提供帮助,但我相信您需要的信息已经记录在案并由其他几个 Stack Overflow 答案回答。

    【讨论】:

    • 谢谢 - 凭证提供者方法似乎最合适。肯定有文档,但我有点不相信在进行简单的 nuget 恢复时提供命令行凭据是如此困难。
    • 这是为了安全。任何体面的网站都将禁止没有 2FA 的用户名/密码登录,并且没有关于如何使用本机应用程序进行 2FA 的标准(更不用说 nuget.exe 通常在脚本中使用,而不是交互方式)
    猜你喜欢
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    • 2023-03-05
    • 2015-04-25
    • 2014-12-06
    • 2020-01-08
    相关资源
    最近更新 更多