gpt4 book ai didi

powershell - 为 PowerShellGet 创建纯 powershell Nuget 模块

转载 作者:行者123 更新时间:2023-12-04 01:39:26 24 4
gpt4 key购买 nike

我想要的是
我想将许多 PowerShell 脚本发布为 Nuget 包,以在构建系统上使用。
我想使用 PowerShellGet为我做安装工作和版本管理。
我不希望这些脚本成为任何 Visual Studio 解决方案的一部分,而是作为独立脚本。
使用场景
在任何系统上,配置了 Nuget 提供程序的用户执行:

Install-Module MyModule
从那一刻起,该模块的所有导出 永久可用对于这个用户。
用户也可以再次调用该命令到 更新版本那些脚本。
我做了什么
您可以在此处找到包的当前状态: GitHub
  • 我已将 Nuget 提供程序添加并配置到我们的本地 Nuget 服务器
    要做到这一点,请调用 Get-PackageProvider -Name NuGet -ForceBootstrapSet-PSRepository -Name My_Nuget_Repo -SourceLocation http://my-nuget/api -InstallationPolicy Trusted
  • 创建了合适的模块,可以通过Import-Module本地导入
  • 使用该模块创建和发布 Nuget 包

  • 问题
    我可以通过 Install-Module 安装该软件包cmdlet,我稍后可以在 Get-InstalledModule 中看到它列表。
    但是,没有可用的功能。
    还有,无论如何,但是 Install-Module不从我的包中调用任何脚本:
  • 未调用 ScriptsToProcess来自 MyModule.psd1
  • 未调用 Install.ps1来自 tools文件夹
  • 未调用 Init.ps1来自 tools文件夹
  • 模块导出的 Cmdlet 不可用,模块无法导入 Import-Module

  • (从 Visual Studios Install-Package MyModule 安装时,相同的包可以正常工作,调用脚本,导入 PowerShell 模块)。
    调查
    由于 PowerShellGet基于 OneGet看来问题出在 Install-Package cmdlet(在 Install-Module cmdlet 中调用)。
    当我执行 Install-Package MyModule来自 Visual Studio Install.ps1Init.ps1被称为。但是来自纯 PowerShell 的相同命令什么也没做。

    最佳答案

    经过长时间的逆向工程,我找到了根本原因

    技术原因

    神奇标签PSModule必须添加到 <Tags>在 nuspec 文件中。

    真正的原因

    您根本不应该手动创建 nuspec 文件和打包 nuget 包 .使用Publish-Module cmdlet 代替。

    如何正确地做

    我更新了powershellget-module GitHub和:

  • 可发布的最小模块示例
  • 一种如何将本地文件夹用作 Nuget 提要
  • 的方法
  • 该模块的发布、安装和使用
  • 引用脚本没有依赖,它在本地完成,所以你可以研究它

  • 看看这个。

    关于powershell - 为 PowerShellGet 创建纯 powershell Nuget 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33433824/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com