首页 > 解决方案 > 检查是否已配置 nuget 源

问题描述

我想将托管在我们的 TFS 实例上的 nuget 包提要添加到我们所有开发人员的工作站。我遇到的问题是,如果已经添加了源,我会收到一条错误消息 The name specified has already been added to the list of available package sources. Please provide a unique name.

我想要做的是在我运行代码添加源之前检查机器上是否已经注册了 nuget 源。检查nuget.exe 的文档我尝试将List操作与 and 一起使用NameSource但我得到的结果与我刚刚运行的结果相同nuget sources

所有这些命令:

nuget sources list -Source $myURL
nuget sources list -Name $myName
nuget sources

返回相同的结果:

Registered Sources:

  1.  nuget.org [Enabled]
      https://api.nuget.org/v3/index.json
  2.  myPowershellFeed [Enabled]
    https://myURL.myDomain.org

我正在使用 Powershell 运行这些命令并想出了一个解决方法,但理想情况下,我希望有一个 nuget.exe 命令行选项可以为我获取此信息。

标签: powershellnuget

解决方案


在 PowerShell v5 中,您可以访问该PackageManagement模块。这包括 NuGet 包提供程序:

$nuget = Get-PackageProvider -Name NuGet

除此之外,您还可以访问所有来源:

$nuget | Get-PackageSource

默认情况下,这将只有nuget.org,但是随着您添加的源,您也将从此命令的结果中看到它们。作为奖励,因为它是一个 powershell 命令,它返回对象而不是字符串,因此您可以执行以下操作:

Get-PackageSource -Name myPowershellFeed |
    Format-List -Property * -Force

要解决您的问答:

if (-not $(Get-PackageSource -Name myPowershellFeed -ProviderName NuGet -ErrorAction Ignore))
{
    # add the packagesource

推荐阅读