【问题标题】:How to properly configure external nuget package source with credentials?如何使用凭据正确配置外部 nuget 包源?
【发布时间】:2019-08-08 15:46:24
【问题描述】:

我的项目中有一个外部 nuget 包源,我通过 Package Manager Settings 在 Visual Studio 2017 中添加。我可以正确安装这些软件包,但是当我点击 publish(它是一个 dotnet 核心控制台应用程序)时。我得到这个错误状态:

2>为源“https://***.azure.com/*****/system.servicemodel.duplex/index.json”重试“FindPackagesByIdAsync”。 2>响应状态码不表示成功:401(未授权)。

我搜索了一个使用cmd 添加凭据的解决方案,但是当我尝试执行添加命令时,我从 cmd 收到此错误消息:

指定的名称已添加到可用包源列表中。请提供一个唯一的名称。

所以我需要从 Visual Studio 中删除包源(使用包管理器设置),在我删除包源后,cmd 命令有效,但是我无法再访问 Visual Studio 中的外部包(因为我删除了它以便可以从命令行添加)。

我该如何解决这个问题?

编辑: cmd语法是这样的:

nuget.exe sources add -name MyExternalSource -source https://***/nuget/v3/index.json -username nugetUser -password MyToken

【问题讨论】:

  • 在继续之前,docs.microsoft.com/en-us/nuget/consume-packages/… 检查您的用户凭据的确切存储位置。还可以尝试使用dotnet publish 生成部署二进制文件,这可能会给您比 Visual Studio 更好的错误消息。
  • 您在发布之前是否成功构建了项目?如果您的情况在发布失败时构建良好,也许您可​​以尝试重新构建项目并确保将引用的程序集复制到输出文件夹,然后发布项目。

标签: c# visual-studio nuget


【解决方案1】:

通过 Azure Devops 源推送或使用包时需要身份。

我认为你不需要像nuget.exe sources Add -Name "TestNuget" -Source "https://xxx/nuget/v3/index.json"这样的命令,因为它是用来管理Nuget.config文件中的包源而不是解决未经授权的问题。见sources command

我得到这个错误状态:

2>为源重试“FindPackagesByIdAsync” 'https://***.azure.com/*****/system.servicemodel.duplex/index.json'。 2>响应状态码不表示成功:401(未授权)。

大多数时候,我在使用Self-Contained部署模式时遇到这种消息。但实际上发布可以在我的机器上成功,消息如下:

(我认为发布在您这边也成功了,在这种情况下我认为您可以忽略它或使用相同的 PublishProfile 第二次发布项目,错误消息会消失)

也可以在构建项目成功后以Framework-dependent模式发布项目。

如果发布失败:

1.如果您的发布因该消息而失败,我认为您可以通过Nuget Package Manager UI 删除referenced packages,并从Package Sources UI 中删除Feed Url

2.然后重启VS和re-setPackage Sources Setting中的Feed Url。无需使用命令行,使用 VS2017 UI 并在重新设置包源后重新添加包。

3.当你从this等新设置的feed中搜索包时,它会弹出一个身份窗口,要求你输入帐户和密码,然后你现在授权。之后你就可以找到,在你的项目中消费这个包,并且发布成功。希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 2018-08-18
    • 2019-07-22
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多