powershell - 检查是否已配置 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 一起使用Name
,Source
但我得到的结果与我刚刚运行的结果相同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 命令行选项可以为我获取此信息。
解决方案
在 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
推荐阅读
- swift - SwiftUI 教程 PresentationButton 错误
- ios - 如何在应用程序运行时更改 NavigationBarColor
- java - 如何在生产中部署 H2O flow pojo 文件
- javascript - 如何使用闭包编译器捆绑所有 js 文件
- assembly - x86 汇编 16 位与 8 位立即操作数编码
- android - 构建提供 FileUsesReservedNameException 的 App Bundle
- puppeteer - 如何使用 Puppeteer 在页面中搜索特定 URL 并单击它?
- java - 如何更改 jqgrid 寻呼机中的值
- symfony-4.3 - symfony php bin 控制台路由器匹配命令失败并进入其他位置获取 path_info?
- javascript - IE11 上的 VUE favicon.ico 无法正常显示。(路由器更改时消失)