srs*_*ate 9 windows powershell package-management nuget powershellget
我正在尝试了解 PowerShell 中的包管理,但得到的图片不完整。当我查看对象 PSRepository、PackageProvider 和 PackageSource 时,它们似乎都具有以下关系:
PSGallery.NuGet,Chocolatey,或PowerShellGet。nuget.org,MyCustomVSTSFeed,或PSGallery。我查看了以下链接,但它仍然没有提供它们之间关系的清晰图片。
PSGallery既是PackageSource又是PSRepository?PowerShellGet提供对库的访问的模块的名称和PackageProvider的名称?PowerShellGet 3.0 将与该模块的先前版本有根本的不同。它将不再依赖于PackageManagment,直接使用 NuGet API 和库(而不是nuget.exe)并具有新语法。您可以从DevBlogs 文章和GitHub上了解有关 PowerShellGet 3.0 正在进行的开发的更多信息。
因此,本页上的问题和答案仅与 PowerShellGet 2.0 相关。
最好的方式是将其视为两个领域;PackageManagement一项和PowerShellGet一项。
PackageManagement(以前称为 OneGet)是外部领域,是 Windows 中包传送的框架。它通过 PowerShell 进行管理,但适用于整个操作系统或用户配置文件。它提供了两个主要类:
PowerShellGet是内部领域,是一个 PowerShell模块,它使用PackageManagement框架专门为 PowerShell提供包。它注册为PackageProvider,并使用关联的PackageSources从 PowerShell Gallery 或其他源提供模块和脚本。它引入了一个新类,称为PSRepository。您可以将其视为仅存在于PowerShellGet领域中的PackageSource的虚拟包装器。
当您使用注册新的PSRepositoryRegister-PSRepository时,您会注意到,如果您运行,则会自动为PowerShellGetGet-PackageSource提供程序添加具有相同名称和 URI 的新源。PSRepository有一些特定的功能:
Update-*Cmdlet 手动更新上述内容。对于安装(卸载)/更新模块和脚本,PowerShellGet使用PackageManagement Cmdlet。为了发布脚本和模块,它将它们包装在存档中后使用.NET CLI命令。dotnet nuget pushnupkg
综上所述,我们现在可以回答问题中的四点:
string属性,可用于访问PackageProvider对象。Get-PackageProvider简而言之,当您处理 PowerShell 之外的软件包时,您可以直接使用PackageManagement框架。当您处理PowerShell的模块和脚本时,您将使用PowerShellGet,它使您能够对框架和 NuGet 进行抽象访问。
资料来源:
| 归档时间: |
|
| 查看次数: |
844 次 |
| 最近记录: |